1
我正在试验Scheme(MIT/GNU计划9.1),并且正在编写一些简单的程序来读取和写入文件。来自计划文件(MIT/GNU计划)的读线
为了读取包含在一个文件中的所有线路,我写了下面的列表:
(define read-lines-from-port-impl
(lambda (file-input-port)
(let* ((line (read-line file-input-port))
)
(if (eof-object? line)
(list)
(cons line (read-lines-from-port-impl file-input-port))
)
)
)
)
(define read-lines-from-port
(lambda (file-port)
(if (input-port? file-port)
(read-lines-from-port-impl file-port)
(list)
)
)
)
(define read-lines-from-file
(lambda (filename)
(call-with-input-file filename read-lines-from-port)
)
)
问题1
这似乎是工作,但也许有一个更地道/简明的做法 这在Scheme中。你能建议如何改进这个代码?
问题2
在上面的代码我已经使用呼叫与输入文件,其负责打开一个 输入端口的呼叫读线-从端口之前和之后,关闭它的程序 已完成。
如果我想使用开放输入文件和关闭输入端口来打开和关闭输入端口,我将如何在Scheme中编写此代码?我的意思是我要
- 调用open-输入文件
- 读取产生的口线
- 调用close-输入端口
在Haskell我会用做记号,但是我如何在Scheme中指定这样的一系列操作?
我是初学者,所以我不会想出让自己。我想我会设法让你的片段工作。非常感谢提示。 – Giorgio