読書会

今日はオンラインでナニ。

2.3.2 記号微分

試験書く、と言いつつ網羅できぬまま 2.57 の確認。自分の以前の解では加算、乗算なオブジェクトの cdddr が null? だったら云々な形でした。例えば以下だと

(+ x y z)

addend 手続きは (+ y z) を戻すし、

(+ x y)

だと addend 手続きは

(+ y)

を戻すカンジ。で、上記の式が addend に渡された場合には y が戻される、という、ある意味 easy な実装だった。当時はこれだけで済むんだから良いよね、って感想で次の 2.58 についてはスルーしてました。

ところが

今日見せて頂いた実装によれば sum とか product のコンストラクタを修正してて、ここから考えていたお陰で次の問題のソリューションにも応用できていた。
基本的に

(+ a b c)

なソレを

(+ a (+ b c))

みたいな二項演算に変換してたので、そのまま中間記法に応用できたとの事。excellent だなぁ。プログラマは怠惰が云々との事だけど、基本的な検討とか考え方てきな部分をサボッてはいかんという良い例。

そういえば

そろそろ予習しとかないと微妙、って解っておりつつ予習をスルーしてしまうな。そろそろきちんと予習しないとマズいんで頑張ります (誰