Land of Lisp 8章を読んだ
8章を読みました。「グランド・セフト・ワンプス」という謎のゲームが始まって笑った。
初っ端からコードが結構入り組んでいて、読んでいてもあまり頭に入ってこない。とりあえずふわっとしながら読み進めていたけど、最終的にゲームが動かなくて辛くなりました。
*** - UNIX error 71 (EPROTO): Protocol error
The following restarts are available:
ABORT :R1 Abort main loop
ってなって画像が更新されない。エラーでぐぐってもイマイチよくわからない。
原因を考えてみたら、どうやら実行しているディレクトリのせいらしいです。
現在、Windows上でVirtualBox使って、Ubuntuを動かしているのですが、ファイルのやり取りを楽にするために、ホストOSとゲストOSの共有フォルダを作って(ここを見たはず)、そこにいろいろ置いています。
このディレクトリ下にあるファイルのユーザがrootで、chmodしても何も起こらないので(エラーも出ないのはおかしくないですか?)、ホームディレクトリ下に別のディレクトリ作りなおしたら動きました。それだけでもう大変に消耗しました。背伸びしてLinux使ってるから何もわかってません。
8章 親父のワンプスとは一味違う
http://landoflisp.com/wumpus.lisp
- random関数 - 渡した数値より少ない自然数を返す
- loopコマンド - 様々な型のデータに対してループできる
(loop for n from 1 to 10
collect (+ 100 n))
みたいに使える。Schemeだとループは再帰で書くイメージあったけど(よく知らないだけ?)、CLはループあるんだね。
- set-difference関数 - 一つのリストにあってもう一つのリストにない要素を見つけられる
- intersection関数 - 二つのリストで共有されている要素を求める
- remove-duplicates関数 - リストから重複した要素を取り出す
まとめ
loopといくつか新しい関数が出てきただけで、あとは今までの章で解説されている書き方を使っているみたいだった。さらっと解説してあるから、ふーん、そうなんだと思って流し読みしてしまったけど、やっぱり難しい。いままでの復習が必要っぽいから、別の記事でまとめて書きたいと思います。とりあえず、この「グランド・セフト・ワンプス」をクリアしないと…。
スタートから詰んでることがあってキレそう。