ひとり勉強会

ひとり楽しく勉強会

2007-03-01から1ヶ月間の記事一覧

この前のScheme or YARVが面白かったので、なんとなく楽しくなって、Toy Lispを作ってらっしゃる日記を検索して見て回ったりしてました。 リスト 2007-03-14 - HaskellでLispを書く日記 - haskell ではHaskellでLisp。ちゃんとしたS式パーザがとてもコンパク…

まとめ

途中から全然YARVソースコード勉強会じゃなくなってしまいましたが、今日はここまでです。 ささださんが書かれていたとおり、ほんとに簡単にできちゃうんですね。これはかなり楽しかったです。もう少しマジメに作ってみるともっと楽しいかもしれません。今回…

おまけ: Scheme on YARV

これで今日のYARV勉強会はおしまいです。って、これではやけに短くなってしまったので、おまけとして、るびま で触れられていた 本当は、今回何か簡単な言語のコンパイラを作ろうと思っていたのですが、間に合いませんでした。誰か Scheme あたりで挑戦して…

insns.def

insns.defでの命令定義はグループ別にまとまっていて、上から順に 変数の操作 (getlocal, ...) 値の操作 (putnil, ...) スタック操作 (pop, dup, ...) メソッドや別名定義関係 (definemethod, alias, ...) クラス/モジュール定義 (defineclass, ...) メソッ…

YARVソースコード勉強会 (14)

お久しぶりです。週一の勉強会だったはずなのにお久しぶりです。 [YARV] insnhelper.h insns.defはYARVの命令の実装なので、VMの内部状態をいろいろと操作します。VMは前々回見たようなデータ構造で表現されてるわけですが、これをもう少し抽象化して、簡潔…

まとめ

しばらく書いてなかったらひとり勉強会の書き方を忘れています(あせ。なんか変な感じ。 次回は、insns.def の内容を面白そうなところをつまみ食いしながら一気に眺めてみようと思います。あと読んでみたいのは、スレッド周りの実装くらいでしょうか。という…

th_eval_body:例外処理

改めて話を戻して、例外処理について。raise〜rescueやthrow〜catchの他にも、break/redo/next, returnなども同じ仕組みを使って実装されています。この辺りの処理は th_eval_body にまとまっています。基本的な流れとしては… exception_handler: cont_pc = …

th_eval_body:実行

th_set_top_stack で制御フレームの設定が終わったら、いよいよ実行開始。th_eval_body 関数です。 VALUE th_eval_body(yarv_thread_t *th) { ... TH_PUSH_TAG(th); if ((state = EXEC_TAG()) == 0) { vm_loop_start: result = th_eval(th, initial); if ((s…

YARVソースコード勉強会 (13)

一月ぶりのYARV勉強会になってしまいました。今日のリビジョンは r11982 です。いつのまにか yarv_iseq_t が rb_iseq_t になったり、yarv_control_frame_t が rb_control_frame_t になってました。おおお。

[SICM] まとめ

今日はここまで。次回は、そもそも「ラグランジアン」ってどうやって出してくるの?がテーマの1.6節に移ります。

[SICM] 1.5 The Euler-Lagrange Equations

オイラー・ラグランジュ方程式。 action(pathから実数値への関数)が最小になるようなpathが、現実に実現されうるpathなのでした。ところで「f(x)を最小にするようなxは、fの微分が0になるようなxである」のと同じで、pathについても、「action(path)を最小…

[SICM] 1.4 Computing Actions (承前)

最小作用の軌跡を探す 前回は、 ラグランジアンがわかってる 作用を最小にするpathもわかってる ときに、実際にそのpathを使って計算した作用が極小値になってることを確かめました。今回は ラグランジアンがわかってる 始点と終点の一般座標もわかってる と…

[SICM] SICM 勉強会 (2)

合宿と葬式と花粉症が一度に来たような忙しさ(比喩になってない)で思いっきりサボってしまいました。反省。大変お久しぶりですが、第2回SICMひとり勉強会です。今回は、ラグランジアンから実際のパスを求める手続きをもうちょい具体化するところです。