Непонятно, что вы намеревались с помощью приведенного выше кода. Если вы пытались загрузить текстовый файл и оставить загруженное значение в переменной с именем bootstrap-c-code
, попробуйте следующее:
(define bootstrap-c-code
(let ((from-file
(lambda (file-name)
(let* ((ip (open-input-file file-name))
(res (read-text-file-from-input-port ip)))
(close-input-port ip)
res))))
(from-file "llvm.c")))
Конечно, определение from-file
будет видно только внутри let
, если вам нужно использовать его снаружи, define
вне всего выражения. Если вам нужна только функциональность from-file
внутри let
, вы можете получить тот же результат гораздо более простым способом:
(define bootstrap-c-code
(let* ((ip (open-input-file "llvm.c"))
(res (read-text-file-from-input-port ip)))
(close-input-port ip)
res))
С другой стороны, если вы намеревались создать процедуру с именем bootstrap-c-code
, то правильный синтаксис будет:
(define (bootstrap-c-code)
(define (from-file file-name)
(let* ((ip (open-input-file file-name))
(res (read-text-file-from-input-port ip)))
(close-input-port ip)
res))
(from-file "llvm.c"))