目前還不清楚你想要用上面的代碼。如果你正在嘗試加載一個文本文件,並在可變稱爲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
它在整個表達式之外。如果你只需要let
內的from-file
的功能,你可以得到一個更簡單的方法相同的結果:
(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 2011-12-30 04:00:53
好!然後考慮傳遞「llvm.c」作爲函數的參數,而不是硬編碼,值 – 2011-12-30 04:03:38
,但等待......它不起作用:(參考未定義的標識符:讀文本文件從輸入端口 – Cynede 2011-12-30 04:52:50