標準入出力 - lisp-cookbook-ja/common-lisp GitHub Wiki

  • 主な標準出力関数

format関数が使われることが多いです。 : format関数のページ

第一引数に t を指定することで標準出力へ書き出します。

(format t "Hello World!")
;-> Hello World!
;=> NIL

また、シンプルな出力関数print, princ, prin1 は標準出力へ文字列を出力します。

print は出力に先立って改行を出力する点に注意が必要です。

(print "Hello World!")
;-> 
;   "Hello World!"
;=> "Hello World!"

(prin1 "Hello World!")
;-> "Hello World!"
;=> "Hello World!"

(princ "Hello World!")
;-> Hello World!
;=> "Hello World!"

主な標準入力関数

read, read-char, read-lineを標準入力の取得に利用できます。

''標準入力''

Hello World !

''実行結果''

(read)
;=> "Hello World!"

(read-char)
;=> #\H

(read-line)
;=> "Hello World!"

また、数値を標準入力から与えた場合、 readは入力のストリームから一度につき一式のlispのデータを読み込みます。 read-char, read-lineは入力を文字・文字列として読み込みます。

''標準入力''

100

''実行結果''

(read)
;=> 100

(read-char)
;=> #\1

(read-line)
;=> "100"

実行方法の例 : Windows, PowerShell + SBCL で read-line 関数を実行する場合

PS> echo "Hello World!`n1" | sbcl --eval "(progn (print (read-line)) (quit))"

注意点

どのような動作をするかは実行方法(REPL上での動作か、スクリプト動作か、など)や 実行環境(CLISP, ccl, sbcl,,)により異なりますので、使用する際には注意が必要です。

Common Lisp では、標準入力はstandard-input というストリームの一種です そのため、このページに掲載していないストリーム読み込み用関数も 標準入力の読み込みに使用することができます。。 また、これらの関数は標準入力以外のストリームを対象とした読み込みが可能です。

参考

''出力''

''入力''

''標準入出力''