![](https://blogimg.goo.ne.jp/user_image/58/c3/a52fc4fc347b668a3ad12620e931f40f.png)
()を絡めたCDRの挙動が不安になったので一応チェック。ほうほう・・こういう動きなのね(今更)
![](https://blogimg.goo.ne.jp/user_image/0d/aa/f3a7d9b67f50c2cd7c05ce1001258212.png)
ふうむ・・mapの入れ子にした場合の挙動の勉強になりそうだな?
mapcって?副作用を目的に使うことのこと。表示するだけなのに副作用とか・・? とりあえずそれは後で検証するとして・・
(cdr (node)で上で見たとおり(garden west door)が読まれて・・ってのが次の(attic upstairs ladder)にもmapされると・・こんなの自分で考えられるようになるのかなぁ・・
で、気になってるここでのmapc と mapの違いをfor-each と mapで検証
![](https://blogimg.goo.ne.jp/user_image/14/e1/a4fa4cd04e2da4349ce318e33ab98a6f.png)
こっちがmapcに当たるfor-eachで・・
![](https://blogimg.goo.ne.jp/user_image/71/ed/e1b05064706675381b6bb034094b5afc.png)
こっちがmapですけど・・・出力結果一緒だよなぁ・・?
![](https://blogimg.goo.ne.jp/user_image/3b/71/edc85b9fd8d1e0132e8d9f285ec01c60.png)
んで、ここだよ問題は・・pair-for-eachの挙動が分からなかった・・
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
![](https://blogimg.goo.ne.jp/user_image/2e/dd/b215c6488300bef68f544abf757a4252.png)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
意味フw
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
![](https://blogimg.goo.ne.jp/user_image/7f/df/039882dca29397e730c415ea45e47260.png)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
サンプルを見る。どんどん減ってるのは分かるが・・結局どういうことか分からなかったので・・
![](https://blogimg.goo.ne.jp/user_image/06/b5/295c2d9fe11a93d9ea44a8d244092dff.png)
デバッグモードでひたすらステップを観察すること数時間・・・うーん!これはもしや(結果的には)CDRで再帰を回してゆくのを別の方法で行うってことなんだろうか?と推測する。LoLの説明も超アッサリなんで(あ、また借りました!)どうにもピンと来ないけど、lstの中身がだんだん頭から消えてゆくのでダブってる部分が存在してたらスキップしてダブりが無くなった時点でdot-name と dot-label が実行されると・・
![](https://blogimg.goo.ne.jp/user_image/2f/70/18a8880686ddcd605bf168dd46092406.png)
いよいよラストが間近。thunkで包む・・って・・これもLoLだとすごくアッサリなんですよね。しょうがないのでdot->pngの使われ方を見て推測するしか無いな・・
![](https://blogimg.goo.ne.jp/user_image/0e/07/6dd70a74ecbb95dfce1471b1b8003b5f.png)
thunkの部分は引数なしのlambdaって事はgraph->dotをただここで与えられた引数で実行して・・ってのをファイル出力する、と?わざわざこんな事をするする利点は・・モジュールとして色んな関数で使うためとかかなぁ?
![](https://blogimg.goo.ne.jp/user_image/5a/f0/ad795bcb0f33cf9c6c3bfad1f5a30024.png)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
このprocedureの部分がthunkか・・あ、こちらの定義で引数なしと決まってるのか。thunkの部分でファイルネームが変化してそれを保存すると
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
![](https://blogimg.goo.ne.jp/user_image/28/a6/e6a35fa7be43c25516503e1a65d9cb36.png)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
う~ん、#:existsってオプションの意味が分からん・・・
![](https://blogimg.goo.ne.jp/user_image/77/a0/fc852b7b177a32761ab8ccc365c0ac17.png)
文脈から推測するに、同名のファイルがもしも存在していたら・・って事かな?
![](https://blogimg.goo.ne.jp/user_image/16/fa/a062505dd05da6e8166ad784f512785d.png)
ネットで検索してたら「サンプル無くて分からねぇよ」という外国人の書き込みが。激しく同意!
という訳で、なんとか自分の中では整合性が取れた解釈で半分以上写経みたいな感じではありますがグラフ描画のための変換プログラムの理解に努力しました。
最後にいよいよグラフ描画実行だ!と思ったのですが・・何故かWindowsPCにGraphvizがインストール出来ないんです。作業までは出来るのにデスクトップにアイコンは出ないしプログラムリストを見てもuninstallしか無いしなぁ・・
とりあえずLoLのグラフ描画プログラムはここまで~ たしか以降の章でもグラフ描画は使うはずなので、復習はその時にやります。
印象的だったのは・・mapの入れ子とassocでの返り値、正規表現か・・どれも自分で何かを作らないと身につかんな~・・間違いなく!