Непонятно, что вы намеревались с вышеуказанным кодом. Если вы пытаетесь загрузить текстовый файл и оставить загруженное значение в переменной называется 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"))
Спасибо! Мне нужен второй вариант с (bootstrap-c-code) – Cynede
Хорошо! Затем рассмотрите передачу «llvm.c» в качестве параметра функции, вместо жесткого кодирования значение –
, но подождите ... это не работает :(ссылка на неопределенный идентификатор: read-text-file-from-input-port – Cynede