gauche

タグ (続

昨晩、ヒープオブジェクトの項で道に迷いました。

タグ

情報投入中。pattern variable って何だ。 てか、クラスタグのあたりで道に迷ってたりします。とりあえず下書きベースで保存した後で調べてる弱さっぷり。

Gauche-0.9 のタグに関するメモ

なんとか Reading Gauche 方面に出力したいんですが、なかなか微妙。

Gauche-0.9 のタグに関するメモ

重箱のスミをツツく。

libgauche 試す

とりあえず固定なソレを試してみます。色々試行錯誤したんですが以下なソースで

shiro さんからフォロー頂いた

曰く、「-I とか -l とかのフラグは gauche-config で取れます。」との事。 昼休みが終わりそうな瞬間に試してみた。以下は MacBook で試した結果。 $ gauche-config -I -I/opt/local/lib/gauche/0.8.13/include $ gauche-config -L -L/opt/local/lib/gauche…

libgauche 試す

とりあえず以下なカンジで。 Scm_Init 呼び出して Scm_GlobalVariableRef で + とかをナニ その後どうすんだろ。Scm_ApplyRec? Scm_Apply?

Hello World

とりあえず mac のヘッダのありかが分かった。/usr/local/lib/gauche/0.9/include らしい。どうやって探したのか忘れましたが、/usr/local とか /opt/local とかを見てたら、だったんだと思います。

とりあえず作ってみようとしてみる

でびあんだと gauche-dev パケジを導入しないと微妙な模様。入れてみた。

タグ

Reading Gauche のタグについてな項のモディファイ中。いっちゃん最後の_Heap object_では以下な記述をしてます。 末端 3 bit が 111 ペアと flonums 以外の heap-allocated なオブジェクトの最初のワードにのみ、との記述あり 末端 3 bit をマスクして ScmC…

Gauche-0.9 なタグの実装

確認したら 0.8.11 な実装とは異なる模様。gauche.h のコメント見つつ以下にまとめ。

NDK 使う練習

ってコトで libgauche をナニ。

0.9 な reading gauche

とりあえず着手してみた。最初の一発目から微妙ッス。 てか、このあたりって 0.9 も 0.8 も無いように思ってるんですが、いいのかなぁ。 最初のハードルはマクロのひらかも。

shiro さんからフォロー頂いた

曰く VMEvalとかVMApplyの戻り値はevalやapplyの結果ではないことに注意してください。 これらの手続きはVMのスタックに引数を積み、*次にVMが制御が戻った時点で* 「VAL0に格納された手続きを、スタックに積まれた値を引数として呼び出す」という コードが…

repl.c あたり

面白いんですが整理が大変。とりあえず確認したのは Scm_ApplyRec 手続きからなんですが、ここでは引数で渡されたリストの要素を取り出しながら vm->vals 配列に格納して apply_rec 手続きを呼び出してます。 apply_rec 手続きの定義が以下。 static ScmObj …

ざっくり見すぎ

なんとなくこうなっていくんだな、というあたりは見えかけてたんですが、なんとなく腑にオチないな、と言いつつ repl_read_cc 手続き (repl.c の L102) 見てて微妙な違和感。 Scm_VMPushCC(repl_eval_cc, data, 4); return Scm_VMEval(result, SCM_FALSE);よ…

Scm_VMRepl 掘削メモ

現実トウヒがてら、ざくっと掘削したメモとか帰宅後に掘削したメモとか。

gauche-0.9

昨晩掘削したあたりは 0.8 系と変わりは無いのかな。

0.9 というか

それ以前な部分を見ている状態だったり。

0.9 な Reading が開始されている模様

とりあえず main.c の 516 行の } else { Scm_Repl(SCM_FALSE, SCM_FALSE, SCM_FALSE, SCM_FALSE); }から確認開始。knishii さんが掘ってるナニも確認しつつ。

現実トウヒの成果

なんとなく gosh 起動して入力してみたら一発ツモ。なんで現実トウヒはこんなに生産性が高いのか、と小一時間説教 (誰 gosh> (disasm (lambda (a b c d) (e d))) main_code (name=#f, code=0x4099c0, size=3, const=1, stack=4): args: #f 0 LREF0-PUSH-GREF…

反則の解

empty-env が戻す手続きオブジェクトは error 手続きを呼び出して例外を発生させる。 (define empty-env (lambda () (lambda (sym) (eopl:error 'apply-env "No binding for ~s" sym))))Gauche では guard という手続きがあるので has-association? はこうす…

ビルド環境構築

Android ビルドすんのに 15GB 程度の領域が必要との事にて、VirtualBox 環境再度作成に着手。ディスク 20GB 作成中なんですが結構時間がかかっております。しかも df 見たら 2 週間たってないのに 50% を越えようとしているな。

libgauche ナシのナニ

作成着手。とりあえず configure して $ CC=arm-linux-gnueabi-gcc AR=arm-linux-gnueabi-ar LD=arm-linux-gnueabi-ld \ RANLIB=arm-linux-gnueabi-ranlib ./configure --host=armel-unknown-linux \ --build=arm-linux-gnueabi --enable-multibyte=utf-8 --…

対処案

とりあえず armel な gauche と libgauche.so ができたみたいなんですが、動作確認ができん。どうしたものやら、と言いつついくつか対処案を列挙。 Android 丸ごと作ってそこに libgauche.so と gosh を入れちゃう 必要な *.o がまるっと入ってる gosh を作…

gauche の make

普通に make したらどうなるんだろ、という事にトライしてみました。-static 付けずに make して emulator の /system/lib とか /system/bin とかに置いたらどうなるのか、と。

クロス開発環境

参考にしたのは、ARMクロス開発環境構築(ひまじめ)。なんですが、emdebian 凄いぞ。 ちなみに職場端末にて色々試験してたんですが母艦は macbook で、クロス環境作りきらなかったので、Debian 方面にニゲたのですがこちらも微妙で最後の手段として Ubuntu に…

若いひとが

emacs+gauche で SICP に着手、との連絡が twitter 経由でナニ。 sw@mac わははは的な世界が若いうちから広がるなんて裏山の椎茸。

PUSH_GREF_CALL (2)

EoPL の前にこっちをヤッておく事に。とりあえず、昨晩の使用例を元に記述投入。もう少しネカせてレビュ依頼する方向。

PUSH_GREF_CALL

早めに寝る、と言いつつ disasm の旅に着手してしまう。基本的には val0 を push GLOBAL_REF で束縛を解決して val0 に格納 val0 を呼び出す という事で色々試しててようやく出た。