Я хочу сгенерировать код следующим образом:
(define (foo str)
(map (lambda (x) (* 100 x)) (hash-ref dd str)))
(define sth `(begin
(define dd (make-hash (list (cons "L" (list 1 2 3)))))
(hash-set! dd "H" ,(foo "L"))
dd))
(я напишу sth
в sth.rkt
файл и выполню его)
Однако это не работает, поскольку в коде для foo
он ссылается на идентификатор dd
, который находится в сгенерированном коде, и, следовательно, еще не существует!
Есть способ, которым я могу генерировать код, подобный этому:
(define sth `(begin
(define dd (make-hash (list (cons "L" (list 1 2 3)))))
(hash-set! dd "H" (foo "L"))))
и добавьте функцию foo
, но я не хочу, чтобы foo
было в моем окончательном файле!
Как я могу обойти это?