目前尚不清楚您对上述代码的意图。如果您尝试加载文本文件并将加载的值保留在名为的变量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"))