Schemeでprintfみたいな。
Schemeでprintfみたいな処理がしたい。と思って調べたら(format)でいける。
format
覚えることは簡単。
(format "~a is ~a\n" "hoge" 10) ;"hoge is 10\n"
~aでそのまま表示。後ろに任意の引数を付ける。
感覚的にprintfみたいな感じで使える。
しかし、MzSchemeのformatでは「文字列を返す」だけなので、displayを重ねる。
(display (format "~a is ~a\n" "hoge" 10)) ;hoge is 10
文字でも、数字でも~aでいける。
test-from-a-to-bを改造。
素人くさいSICP「独」書会のtest-from-a-to-bを改造する。
(define (test f a b) (define (iter i) (cond ((<= i b) (display (format "[~a] ~a\n" i (f i))) (iter (+ i 1))))) (iter a))
テスト。
(test (lambda (x) (* x x)) 1 5) ;[1] 1 ;[2] 4 ;[3] 9 ;[4] 16 ;[5] 25
printf風に表示出来ました。