第99回 素人くさいSICP読書会(at コントロールプラス株式会社)
- 会場提供&紅茶ありがとうございました
- 直前にスタバで復習してたんで、いきなりhisaさんと内容の話とか始めてしまった
- 問題4.5
- 「=>」の使いどころ。Cみたいな書き方とか
- 自分は割と関数の返り値をそのまま真偽判定に使うのが好きだったりする
を返す関数だと真と判定されるんでやな感じ - パイプに似てる?(ききょうさん)→メソッドチェーンみたいにつないでいくことはできない
- 自分の(ダメ)思考の過程
- cond-actionsを書き換えればいいんじゃね
- →predicate部を使い回さないといけないんでダメ
- →expand-clausesを書き換えないと
- →make-ifの中で分岐させようとする
- →predicate部を使い回さないといけないんでやっぱりダメ(わかってない)。再帰で追加するものを変えないと
- →letで値を取っておこうとする
- →letはメタ言語側なんで、導出された式の中では意味がない
- →lambdaは使えるので、lambdaの形に展開すればいい
- →もしかして問題4.6が先にあればいいということ?
- →SICP神的には4.5で簡単な展開をやって4.6できちんと展開という流れか?
- →とりあえずlambdaで展開する形に書いた。これ
- →lambdaの仮引数のところで名前の競合の問題があるんじゃね?(by hisaさん)
- →言語処理系としては結構致命的かも(このエントリの問題点に似てる)
- →(CLやGaucheには、アクセスできないシンボルを作るgensymっていう機能があるらしい。でもSICPで使うわけにはいかんし)
- →(Gaucheではどうやってるかみんなでソースコードを見てみたり→よくわかんね)
- →そもそも導出された式の形でやろうとしたのが間違いでは?
- →eval-condってのを直書きすればいんじゃね?
- →書いてる途中 ←イマココ