Land of Lispを読んでみる – その1
さいきんアウトプットが少ないと、オルターエゴが、どーもうるさい。
もうちょっとプログラミング能力を上げたいと思って、
長いこと積読になっていた「Land of Lisp」を読んでいるので、
その途中経過を書くことにした。
Lispの本は、全体的にアカデミックで小難しい雰囲気だけど、この本は違う。
作るのも、ゲームだし。ミュージックビデオもある!
...
読書方針としては、コードをちゃんと写経する。登場した関数の役割りをちゃんと確認する。
12月15日くらいから読みはじめて、年末年始にどこまで進むか!
はじめに
もう、ここから長いw。
11ページあって、Lispがどんなにすばらしいか、なぜマイナーなのか、
コンピュータの歴史にそってコミカルに描いている 。
第1章:環境構築
CLISPを導入する。
公式サイトでは、Windows用としてCygwin版を紹介しているが、
今となってはWSL(Windows Subsystem for Linux)が早いと思う。
詳しくは、clispのメモを参照
第2章:数当てゲーム
人間が考えた数字を、プログラムに当てさせるゲームを作る。
10行くらいで、データ定義や関数定義を学ぶ。
第3章:基本構文
リストとか、carとか、cdr。
第4章:条件分岐
nilの話。ifとかcond、case。
第5章:テキストゲームのエンジンを作る
テキスト型のアドベンチャーゲームのエンジン部分を作る。
walkとlook・pickupコマンドで、魔法使いの家を探検できる。
ここで書いたコードは、110行ほど。
ここで関数型プログラミングスタイルが出てくる。
関数型プログラミング言語は敷居が高いけど、
「引数かローカル変数しか参照せず、値を返すだけ」なら、
なるほど感がある。
第6章:コマンドインターフェースを改良する
ゲームのインターフェースを改良して、カッコなしでコマンドを受け付けられるようにする。
evalが登場。ここで書いたコードは、約56行。
第6.5章:Lambda登場
Lambdaのための短い章。
頭の中で、Lambdaをラムブダと呼んでいるヨ。
第7章:いろいろなリストと、ノード図の出力
ドットリストや連想リスト。
アドベンチャーゲームのマップを画像として出力する。
そのために、clispの中からGraphvizコマンドを呼ぶ。
ここで書いたコードは、約130行。
Lispは関数をすぐに評価できるので、デバッグする場合も、テストデータをすぐ確認できる。
うむ、これは便利。
なので、関数ごとに簡単なテストパターンを用意して、チェックする。
第8章:荒くれシティでハンティング! グラン・セプト・ワンプス
ランダムに生成される街を探索して敵を見つけ出すゲームを作る。
その名も「グラン・セプト・ワンプス」
ここで書いたコードは、テストパターン込みで約250行。
街のマップを描くため、 前に作ったコードを再利用する。
と、ここまでで、だいたい1ヶ月。
読んだページは、145ページ/475ページ。
ちょうど30%か。
写経して、自分で入力したコードをデバッグしながらだから、ちょっと心が折れそうだったけど、コツがつかめてきたせいか、だんだん楽しくなってきました。
続く・・・。