【Common Lisp】改行関数(fresh-line)

タイトルのとおり、(fresh-line)は改行する関数です。

こういう簡単な関数の説明も意外と出てこないのよね〜(;^ω^)


lispの出力関数である(princ)なんかは人間に理解しやすい形で出力するのでよく使うのですが、改行処理をしていません。
なので以下のように使うと横に連続して出力されます。

(progn
  (princ 'hello)
  (princ 'world!))
> HELLOWORLD!

そんなときにfresh-lineを使うと改行をしてくれます。

(progn
  (princ 'hello)
  (fresh-line)
  (princ 'world!))
> HELLO
> WORLD!


この(fresh-line)関数は、ただの改行処理をするだけではないことに注意してください。
出力する際に「先頭ではない」ときにだけ改行処理をします。

例を出します。

(progn
  (fresh-line)
  (fresh-line)
  (fresh-line)
  (princ 'hello)
  (fresh-line)
  (fresh-line)
  (princ world))
> HELLO
> WORLD

いかがだろうか。
outputストリームのカーソルが先頭にないときにだけ、
改行されていることがわかると思います。


また、カーソル位置にかかわらず改行をしたい場合は、
(terpri)関数を使えばOK!

(progn
  (terpri)
  (terpri)
  (terpri)
  (princ 'hello)
  (terpri)
  (terpri)
  (princ world))
>
>
>
> HELLO
>
> WORLD

場合によって使い分けるとよろし。