関数型ではないけれども、、、 (2/2)


Display への表示

print 関連の紹介です。 print というのは、純粋に副作用のみを目的としていて関数型からかけ離れた存在です。 ただ、print がないと debug print すら出来ずに困ってしまうので一部紹介します。 wirte/display/newline の式の返り値は、「とくにきまっていません」。 関連情報は
こちらを見て下さい。

以下が使用例です。

> (define (foo x) ; 
    (begin (write x)       ; 引数の値を write
           (newline)       ; 
           (display x)     ; 引数の値を write
           (newline)
           x))              ; 最後に引数の値を返す
> (foo 3)
3                   ; write の場合
3                   ; display の場合
3                   ; 式の値の表示
> (foo "scheme")
"scheme"            ; write の場合
scheme              ; display の場合
"scheme"            ; 式の値の表示
> (define (debug-print comment value) ; こういうのを一つ作っておくと便利
    (begin (display comment)                 ; 値をコメント付きで表示し、
           (display value)
           (newline)
           value))                            ; その値を表示する
> (+ (* 7 6) (max 3 5) (min 3 5))
50
> (+ (debug-print "mul:" (* 7 6))     ; 途中の式の値が知りたければ 
     (debug-print "max:" (max 3 5))   ; debug-print で囲めばよい
     (debug-print "min:" (min 3 5)))
mul:42
max:5
min:3
50

99.9.29/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp