此代碼Common Lisp的:如何抑制換行符或 「軟回車」
(defun arabic_to_roman (filename)
(let ((arab_roman_dp '())
(arab nil)
(roman nil))
(with-open-file (in filename
:direction :input
:if-does-not-exist nil)
(when in
(loop for line = (read-line in nil)
while line do
(setq arab (subseq line 0 (search "=" line)))
(setq roman (subseq line (1+ (search "=" line)) (length line)))
(setf arab_roman_dp (acons arab roman arab_roman_dp))
;(format t "~S ~S~%" arab roman)
)))
(with-open-file (stream #p"ar_out.txt"
:direction :output
:if-exists :overwrite
:if-does-not-exist :create)
(write arab_roman_dp :stream stream :escape nil :readably nil))
'done!))
似乎運作良好。它需要一個像這樣的條目的文件
1=I
2=II
...
並建立一個大的虛線對列表。但是,當我查看輸出文件時,似乎插入了軟回車或換行符。
((4999 . MMMMCMXCIX) (4998 . MMMMCMXCVIII) (4997 . MMMMCMXCVII)
(4996 . MMMMCMXCVI) (4995 . MMMMCMXCV) (4994 . MMMMCMXCIV)
(4993 . MMMMCMXCIII) (4992 . MMMMCMXCII) (4991 . MMMMCMXCI) (4990 . MMMMCMXC)
...
我期待輸出看起來更像只是一個連續的行:
((4999 . MMMMCMXCIX) (4998 . MMMMCMXCVIII) (4997 . MMMMCMXCVII) (4996 . MMMCMXCVI) (4995 . MMMMCMXCV) (4994 . MMMMCMXCIV) (4993 . MMMMCMXCIII) (4992 . MMMMCMXCII) (4991 . MMMMCMXCI) (4990 . MMMMCMXC) ...
是我的代碼它確實不知何故扔在換行的方式嗎?我使用了write
版本的princ
,據說它抑制了換行符。後來我想把這個文件作爲一個大列表讀回到程序中,所以我不想換行符問題。
如果您使用Lisp閱讀器讀取它,無論如何,換行符都不是問題。 –