われわれの評価モデルは, 演算子が合成式である組合せでも使えることを観察せよ. それに従って, 次の手続きの振舞いを述べよ.
(define (a-plus-abs-b a b) ((if (> b 0) + -) a b))
問題文の手続きをエディタに入力します.
(define (a-plus-abs-b a b) ((if (> b 0) + -) a b))
「+」などの演算子が入る箇所にif式が入っているので、奇妙な感じがします.
この手続を評価してみます.
ようこそ DrRacket, バージョン 6.1 [3m]. 言語: Pretty Big; memory limit: 2048 MB. > (a-plus-abs-b 4 3) 7 > (a-plus-abs-b 4 -3) 7 >
評価結果から, aにbの絶対値を加えていることが分かります.
こういう事ができるからといって, 何が嬉しいのかは今の時点ではよくわかりませんが,
テキストを読み進めると, こういうことができないと苦労する例が出てきます\(^o^)/
0 件のコメント:
コメントを投稿