schemeの内部状態変数
テストで出た問題。
Question
(+ (f 0) (f 1))において、引数が右から(つまり(f 1)から)評価されるときは1を、 左から評価されるときは0を返すようfを定義せよ。
Answer
(define (make-func) (let ((pre-val 1)) (define (func x) (set! pre-val (* pre-val x)) pre-val) func)) (define f (make-func)) (f 1) ;;=> 1 (f 0) ;;=> 0 (f 1) ;;=> 0
時間内に解けなかった…だめだー。
落ち着いて考えればできるはずの問題なので悔しい。