Haskellでは、文字列の中の \n は改行。こういうことをすぐ忘れてしまう。
Prelude> :t lines lines :: String -> [String] -- linesは、改行のところで文字列を分割してリストにする関数 Prelude> lines "aa\nbb\ncc\ndd\nee\nff" ["aa","bb","cc","dd","ee","ff"]
Common LispでもHaskellのlinesみたいなのないかなと探していたらsplit-sequenceを使えばいいとわかった。split-sequenceを使えば文字列を分割できる。
(ql:quickload :split-sequence :silent t) ;;末端の改行を含めないlinesをつくってみる (defun lines (str) (split-sequence:split-sequence #\Newline (string-right-trim '(#\Newline) str)))
あるいは、下のようにarrow-macrosを使って同じことをするなら、説明文を自然に追記できる。
(ql:quickload :split-sequence :silent t) (ql:quickload :arrow-macros :silent t) (defun lines (str) (arrow-macros:->> str ;;文字列の末端の改行を削除 (string-right-trim '(#\Newline)) ;;文字列を分割してlistにする (split-sequence:split-sequence #\Newline)))