do-lines
マクロの練習で書いてみた、標準の dolist や dotimes マクロに類するループ系マクロ。名前の通り一行ずつ処理。
(defmacro do-lines ((line &optional (in *standard-input*)) &body body) `(do ((,line (read-line ,in nil 'eof) (read-line ,in nil 'eof))) ((eql ,line 'eof)) ,@body))
使い方。
(defun cat (filename) (with-open-file (in filename) (do-lines (line in) (format t "~S~%" line))))