関数型言語の勉強にSICPを読もう - (29) 3章 - 標準部品化力、オブジェクトおよび状態 (134-137ページ)
時間がなかったので短いです。良くないな。
問題3.7
略。
問題3.8
うまい方法が浮かばなかった。
掛け算を使えばいけるんだけどこれで良いのかな?
(define (make-f) (let ((state 1)) (lambda (in) (set! state (* state in)) state))) (define f (make-f)) (display (f 1)) (display "\n") (display (f 0)) (display "\n")
そういえば右から左に評価する方法が分からなかったのでOSS WEB|SICP|ex-3.8を見たら force という関数を使っていた。
Function: force promise
[R5RS] もし、promiseがプロミスでなければ、それをそのまま返します。
そうではない場合で、もしpromiseの値がまだ計算されていない場合には、 forceはpromiseが内包している式を評価し、その結果を返します。 いったん、promiseの値が計算されると、その値はメモ化され、あとで 再びforceされても、再計算がおこなわれることはありません。
なるほど。覚えておこう。
計算機プログラムの構造と解釈
posted with amazlet on 06.04.15
Gerald Jay Sussman Julie Sussman Harold Abelson 和田 英一
ピアソンエデュケーション (2000/02)
売り上げランキング: 56,404
ピアソンエデュケーション (2000/02)
売り上げランキング: 56,404