SICPの問題解いてくよ
またまたまたおひさしぶりです。Haskoです。
今日から、SICPこと計算機プログラムの構造と解釈の問題をHaskellで解いていこうかと思います。もともと、このネタは、日本のHaskellerなら誰もが知っているだろうnobsunさんこと山下伸夫さんがやられていたのを自分の勉強のために真似をしてみようと思います。
まずは、練習問題1.2から。
問題は、
4 5 + 4 + ( 2 - ( 3 - ( 6 + - ))) 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
を前置記法に直せという問題。
schemeの場合、+などは、そのまま前置記法でつかえるので、2 + 7は、(+ 2 7)となります。
Haskellの場合は、(+)と括弧で囲まなくてはなりません。なので、
Prelude> (/)((+) 5 ( (+) 4 ( (-) 2 ( (-) 3 ( (+) 6 ( (/) 4 5)))))) ( (*) 3 ( (*) ( (-) 6 2) ((-) 2 7))) -0.24666666666666667
あまりにも長くなりすぎたので、改行していますが、ほんとはひとつづきです。
と、このように括弧だらけになります。