X



関数型プログラミング言語Haskell Part33

■ このスレッドは過去ログ倉庫に格納されています
0397デフォルトの名無しさん
垢版 |
2020/08/19(水) 20:35:34.21ID:1ghAy1sC
(今は結合性と優先順位は無視していいので)
n + m

(+) n m
と同じ意味になる。

つまり(2)は
add = (+)
に変数を明示して右辺の演算子を中置記法に戻しただけ

むしろ変数増やしたのが見にくい原因
0398デフォルトの名無しさん
垢版 |
2020/08/20(木) 07:58:20.18ID:mQjEXV61
>>392
(1) の展開は中途半端で、ちゃんと書くならこう

(0)
add :: Int -> Int -> Int
add = \n -> \m -> n + m

これを(1)や(2) のように書いてもよいというのはHaskellの決め事
慣れないうちは常にこう書いていてもよいが
書くのも読むのも段々面倒になってくると思う
慣れればあまり意識せずに読み替えられるので

ついでに言うと
真の2変数関数が必要ならタプルを用いてこう書く
add'' :: (Int, Int) -> Int
add'' (n, m) = n + m

これらは確かに厳密には区別しなくてはいけないが、
ゆるく同一視しておくほうが便利なことも多いので
Haskellでは(2)のような書き方が許されている、と自分は理解している
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況