今日は午後からバイトづくしなので朝からとっとと始める。昨日は気持ちよく終わったので朝が待ち遠しかった(^o^)
持ち物の表示、これはもう昨日のちょっとした書き換えなので余裕
まあ、lookもそのままですし
ところが場所を試しにgarden や atticにしてみるとエラーが。うーむ・・これは連想リストの書き方に問題があるな・・なんで要素が複数個ある場合は半角スペース対で一つだとドット対なのかが関係してるだろうなぁ。でもまあ実際に動かすときには引数の関係でまた変わるか知れんので保留。
続いて関数「walk」に入る。とりあえずCL用のコードに日本語訳を入れまして・・if next って? あとcar next? はぁ?nextにはリストが入ってるのか?とりあえずfind-ifが何を返すのかを調べないと・・
(if next はnextが偽じゃなかったらオッケイってだけと判明)
findfのドキュメントを見ると引数としてプロシージャを取るという。ん?プロシージャって何でしたっけw
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
値を返さない関数・・・いや、何か返してくれないとfindfの引数にならんのでは?まあ、関数とよく似たものなのか・・としておく、現時点では!
nextの中身がlistってのがどうしても納得できなくて中身を表示してみる(コードは例のカンニングサイトを見てしまった、とりあえず今だけ!)。えっ・・確かにリスト。けど、なんでfindでの返り値がこの形で返ってくるのか分からない・・
(findf correct-way (cdr (assoc *location* *edges*)
(cdr (assoc *location* *edges*) を返すとしてcdrの時点でのwestを返しそうなものなのに都合よく(assoc *location* *edges*)の部分((garden west door) を返してnextに入れてるってことだよなぁ・・
とりあえず時間も迫ってきたのでRacketで書き直してみる。で、そのまま(walk)したら・・
あ、このエラーは!living-roomでドット対だったのが原因で連想リストの読み込みがうまくいかなかったのと同じパターン。ということはgarden atticも半角スペース対にしないといけないということでは?
半角スペース対にしたら動いた。やっぱりな!
しかし謎が残ったなぁ。今夜は宿直なのでRacketのドキュメントを読んでみよう!