@uents blog

Code wins arguments.

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

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

引き続きRubyでSchemeインタプリタを書き起こして行きます。 手続きの引数 引数expsにある式リストからひとつずつ式を取り出し評価したリストを返す。 def list_of_values(exps, env) if no_operands?(exps) nil else cons(_eval(first_operand(exps), env),…

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

いよいよ4章。 metacircular (超循環評価器) というものがいきなり登場しました。 被実装言語と実装言語が同じインタプリタのことをそう呼ぶらしく、冒頭からSchemeで実装したSchemeインタプリタが例として登場します。 ただ id:higepon さんが指摘されてい…

SICP 読書ノート#41 - 第3章 まとめ

ところどころ飛ばしましたが、3章をひと通り読み終えました。この章で学んだことを上手くまとめるのは相当難しいですが、自分なりに整理したいと思います。 1章〜2章では手続きやデータによる抽象化について学びましたが、3章はそれらのモジュールをいかに組…

SICP 読書ノート#40 - 3.5.5 関数プログラムの部品度とオブジェクトの部品化 (pp.209-210)

「§3.5.5 関数プログラムの部品度とオブジェクトの部品化」から。 §3.1で乱数を生成する手続きrandが出たが、それを応用して乱数の無限ストリームrandom-numberを定義する。random-initは定数なので何度やっても結果は同じになる。 ;; §3.1から転用 (define …