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