Найдено это время ищет функцию memoizing:В чем разница между make-hash make-weak-hash в racket?
#lang scheme
(define (memo f)
(define mh (make-hash))
(lambda p
(hash-ref mh p (lambda()
(hash-set! mh p (apply f p))
(hash-ref mh p)))))
(define-syntax-rule (defmemo (id . p) . body)
(define id (memo (lambda p . body))))
(provide defmemo)
, как показано здесь: Writing an auto-memoizer in Scheme. Help with macro and a wrapper
Однако в документации есть также: макияж слабого хэш и делать-непреложный-хэш. Какая хэш-функция лучше для memoization?
где будет использоваться 'make-weak-hash'? – X10D
Каждый раз, когда вы не хотите, чтобы GC сохранял ваш объект только потому, что он был в вашей таблице. Например, если вы реализуете финализатор, вы можете использовать make-weak-hash. –