- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
475 :デフォルトの名無しさん[]:2016/06/25(土) 09:42:45.94 ID:VirkFiI/ - カリー化について質問があります。
add :: Int -> (Int -> Int) add x y = x + y 今、ハットンの本を読んでいます。 add :: Int -> (Int -> Int) のほうは意味がよくわかるのですが、 add x y = x + y この表記法のがしっくりしません。 add : Z -> {f | f は Z から Z への写像} add : x -> (f : Z ∋ y -> x + y ∈ Z) なので、 (add(x))(y) = x + y となるという意味かと思います。
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
476 :デフォルトの名無しさん[]:2016/06/25(土) 09:48:52.83 ID:VirkFiI/ - というか関数の書き方についての正式な定義がハットンの本には
ありません。 引数は1つしか取らないということでいいのでしょうか? たとえば、 f x = ... と書いた場合、 「=」は写像の対応を表す記号で、 x -> ... という意味なのでしょうか?
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
477 :デフォルトの名無しさん[]:2016/06/25(土) 09:53:44.96 ID:VirkFiI/ - add x y = x + y
という表記法は普通の関数の表記法とは全く異なるかりー化された関数用 の全く新しい表記法という考えでOKでしょうか?
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
481 :デフォルトの名無しさん[]:2016/06/25(土) 10:01:20.88 ID:VirkFiI/ - >>478
ありがとうございました。略記法なんですね。 add = \x -> ( \y -> x + y ) の正確な意味はまだわかりませんが、こっちのほうは意味がはっきり わかります。
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
483 :デフォルトの名無しさん[]:2016/06/25(土) 10:06:47.68 ID:VirkFiI/ - >>478-480
ありがとうございました。 add x y = x + y ハットンの本を読んでいて、カリー化が出てくるまでは、 関数は一つの引数しか取らないものしか出てきませんでした。 カリー化のところでいきなり x y という表記が出てきたの でこれは何なのかと混乱してしまいました。タプルに似た 何かの型の要素なのかと思ったり。 略記法ということで納得しました。 ありがとうございました。
|