@uents blog

Code wins arguments.

2015-04-01から1ヶ月間の記事一覧

SICP 読書ノート#49 - RubyでSchemeインタプリタをつくろう(8) - 環境に対する操作 (pp.213-228)

環境および束縛、代入まわりを実装しました。やってみると意外と簡単だった。 > (define a 1) => nil > a => 1 > (define y 1) => nil > (set! y 2) => nil > y => 2 > (set! z 3) "set_variable_value!: unbound variable; z" > (define foo (lambda (x) "f…

rbenvでRuby環境を構築する

SICPでやっているRubyによるSchemeインタプリタでどうしてもArray#to_hが使いたくなったが、OSX Yosemiteに標準で付属しているRuby 2.0.0にはなかったので、rbenvを使ってみたときのメモ。 環境 Mac OSX Yosemite 10.10.2 Homebrew 0.9.5 rbenvのインストー…

SICP 読書ノート#48 - RubyでSchemeインタプリタをつくろう(7) - 関数の評価と適用 (pp.213-228)

以下のような関数適用のコードが動くようになりました。 > ((lambda (x) "foo") 1) => "foo" ソースコードはGitHubに置いています。 https://github.com/uents/sicp/tree/master/ch4.1-ruby-evaluator 前回までのリファクタリング その前に前回の内容をいく…

SICP 読書ノート#47 - RubyでSchemeインタプリタをつくろう(6) - 実行オブジェクトへのマッピング (pp.213-228)

前回作った構文木について、そのまま評価器に放り込んで評価させても良いのですが、SICPのテキストのeval()のようにだらだらと長くなるのがいまいちかなと思います。 問題4.3でも取り上げられているように「データ主導」で実装する方がスマートかと思います…

SICP 読書ノート#46 - RubyでSchemeインタプリタをつくろう(5) - REPL/字句解析/構文解析 (pp.213-228)

最初はSICPのテキストを見ながら式評価、関数適用、環境まわり(p226付近)までRubyでひと通り実装しましたが、入力されたSchemeのコードを処理系へどうつなぐかで壁にあたりました。 色々と調べたところ、インタプリタの動作は主に以下のステップを踏むよう…

これからの子どもたちへ - iPS細胞 山中先生の講演会へ行ってきた

前の兵庫県知事であり昨年末に不慮の事故でお亡くなりになった 貝原俊民さんを偲ぶ講演会で、iPS細胞で著名な山中伸弥先生のお話をお聞きしました。 (※神戸新聞のウェブサイトより引用) 帰った後でググりましたたが講演の内容は以下のリンク先とおおよそ同じ…

SICP 読書ノート#45 - RubyでSchemeインタプリタをつくろう(4) - 最初からやり直します

途中まで作っていたRubyによるScheme処理系ですが行き詰まりました。。。 理由はこんな感じです。 rubyによるschemeインタプリタ、ruby上でcons cellを実装してやってたけどlist iterationあたりの実装で限界がきた。rubyのデータ構造に合わせて実装した方が…

SICP 読書ノート#44 - RubyでSchemeインタプリタをつくろう(3)

久しぶりの更新。行ったり来たり試行錯誤だけど毎日少しづつ進めてます… 式の表現 引き続きSchemeインタプリタの実装。今回は式の評価処理について。 self-evaluating items (自己評価式) 数か文字列の時にtrueを返す。number?()とstring?()は後で実装。 def…