標準入出力


主な標準出力関数

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の入力として評価(eval)します。 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** というストリームの一種です そのため、このページに掲載していないストリーム読み込み用関数も 標準入力の読み込みに使用することができます。。 また、これらの関数は標準入力以外のストリームを対象とした読み込みが可能です。

参考

入力

出力

標準入出力