--- title: 第14章・入出力 author: kazu634 date: 2008-11-16 url: /2008/11/16/_1149/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4381;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - gauche - Lisp ---

ゆっくりと勉強は進行中。今日は入出力です。

入力(文字や行を読み取る)

readなどの手続きを用いるようです。

出力

このような手続きがある:

write 引数に渡されたオブジェクトの外部表現を出力します
display 引数に渡されたオブジェクトそれぞれが読みやすい形で出力します
print displayと基本的に同じだけど、最後に改行を挿入します
format C言語でいうところのprintfです

formatについては

(format <出力先> <書式指定> <引数>)

という使い方です。出力先は#tの場合、デフォルトでは標準出力にフォーマットされた結果が出力される。#fの場合、formatした結果を戻り値とする。書式指定には以下のようなパラメータがあるよ:

~d ~b ~o ~x
10進数 2進数 8進数 16進数
gosh> (write 123)
123#<undef>
gosh> (display #\a)
a#<undef>
gosh> (display "Gauche\n")
Gauche
#<undef>
gosh> (print "gauche")
gauche
#<undef>
gosh> (format #f "Result = |~10@a|\n" (* 3 4))
"Result = |        12|\n"
gosh> (format #t "Result = |~10@a|\n" (* 3 4))
Result = |        12|
#<undef>