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