本を読む

読書やコンピュータなどに関するメモ

「つくって学ぶプログラミング言語」

つくって学ぶプログラミング言語 RubyによるScheme処理系の実装
渡辺昌寛
達人出版会
発行日: 2013-04-15
対応フォーマット: PDF, EPUB

 Lispはプログラムとデータが同じ形であることが特徴の一つといわれる。そのため、Lispの教科書ではLispでLisp処理系を書くメタサーキュラーインタプリタの課題が定番だ。ただし、ホスト言語とゲスト言語が同じなのは、けっこう紛らわしくて混乱する。

 それに対して、メタサーキュラーインタプリタの課題相当のLisp処理系を、Rubyをホスト言語にして解説するのが本書だ。より具体的には、だいたい「計算機プログラムの構造と解釈」の「超循環評価器」の節を、Rubyで解いてみせる参考書、という感じ。

 メタサーキュラーインタプリタでは、データ構造はホスト言語のものを使う。これをRubyでやると、つまりこんな(↓)感じ(サンプルは本書よりコピペ)。

[:letrec,
 [[:fact,
   [:lambda, [:n],
    [:if, [:<, :n, 1],
     1,
     [:*, :n, [:fact, [:-, :n, 1]]]]]]],
 [:fact, 3]]

 メタレベルが明らかでわかりやすいけど、ちょっと不気味でもある(笑)。Rubyってシンボル型とそのリテラル表記のある動的型言語なんだと改めて思った。

 なお、本書は達人出版会から出版された電子書籍。有償版と同じものが無償版としても公開されている。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/1123-c69f4068

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad