计划实施:tinyscheme
这是我的尝试:
(with-output-to-file "biophilia.c"
(lambda (output-port)
(write "Hello" output-port)))
Ceates biophilia.c,内容如下:
错误:(:26)参数不足
我在这里做错了什么?怎么修呢?
(define (with-output-to-file s p)
(let ((outport (open-output-file s)))
(if (eq? outport #f)
#f
(let ((prev-outport (current-output-port)))
(set-output-port outport)
(let ((res (p)))
(close-output-port outport)
(set-output-port prev-outport)
res)))))
答案 0 :(得分:4)
您正在正确调用with-output-to-file
。
第二个参数是thunk,而不是期望端口参数的过程。
所以称之为:
(with-output-to-file "biophilia.c"
(lambda ()
(write "Hello")))
with-output-to-file
已经为您重新绑定了当前端口(正如您在重建中所尝试的那样)。
请参阅Racket文档here。