SICPの問題解いてくよ-問題1.3
次は、問題1.3。3つの引数をとり、そのうち大きい2つの引数の2乗を足したもの返す関数を定義するという問題。
とりあえず、addpow :: (Num a) => a -> a -> aという、ふたつの引数の2乗を足す関数を定義。
addpow x y = (x*x) + (y*y)
あとは、if文で大小関係をもとめて、addpowにわたしてあげる。
twomax x y z = if ( x > y ) then if ( y < z ) then addpow x z else addpow x y else if ( z < x ) then addpow x y else addpow z y
また、長かったのでblogに書く際に改行いれました。で、実行。
haskell$ cat sicp1_3.hs addpow x y = (x*x) + (y*y) twomax x y z = if ( x > y ) then if ( y < z ) then addpow x z else addpow x y else if ( z < x ) then addpow x y else addpow z y Hugs.Base> :l sicp1_3.hs Main> twomax 2 3 4 25 Main> twomax 4 3 2 25 Main> twomax 4 2 3 25 Main> twomax 4 2 5 41 Main> twomax 4 2 4 32