これらの手順を実行しようとすると、電話するまですべて問題ないようです
(set! fib (mem 'memorize fib))
(fib 10)
(fib 10)
(set! fib (mem 'unmemorize fib))
(fib 4)
'memorize TO' unmemorize を変更した後、何が起こるかというと、両方を実行するということです。
(define (mem mem-it func)
(let ((table (make-table)))
(case mem-it
((memoize)
(display " --- memoize ---\n")
(lambda (args)
(let ((prev-com-res (lookup args table))) ;; prev-com-res = previously-computed-result
(display " --- memoize2 ---\n")
(or prev-com-res
(let ((result (func args)))
(insert! args result table)
result)))))
((unmemoize)
(display " --- unmemoize --- \n")
(lambda (args)
(let ((comp (func args)))
comp)))
(else
(display " -- Unknown command! --\n")))))
「unmemoize」を呼び出すタイミングがわかりません。memoize にも入ります = S