トップページ > プログラム > 2016年06月25日 > VirkFiI/

書き込み順位&時間帯一覧

12 位/188 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000003200000000000005



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net

書き込みレス一覧

関数型プログラミング言語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 という表記が出てきたの
でこれは何なのかと混乱してしまいました。タプルに似た
何かの型の要素なのかと思ったり。

略記法ということで納得しました。
ありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。