haskell-ja > Archives > 2014/10/07

2014/10/07 07:36:39 UTCcutsea110
#
http://ja.wikibooks.org/wiki/Haskell/%E5%AD%98%E5%9C%A8%E9%87%8F%E5%8C%96%E3%81%95%E3%82%8C%E3%81%9F%E5%9E%8B
#
ここの「存在 という言葉の説明」あたりからが良く分からないので教えてください.
#
"forall はこれらの集合の共通集合を与える。"とあるんだけど
#
[a]ってのはforall a. [a]の略だとして、もしそうならaは任意の何らかの型であってそれは今は決定してないけどBoolになったりIntになったり、
#
その時々で任意の何かの型を取りますよ、ってことですよね。
#
任意の型に共通するメンバを考える意味が良く分かりません。
2014/10/07 07:41:20 UTCkazu
#
forall a が、外に付いている場合、[Int]、[Char] などの集合だと考えるといいでしょう。
2014/10/07 07:41:33 UTCcutsea110
#
なんでforall a.[a]だとボトムのリストになるんでしょう?
2014/10/07 07:41:44 UTCkazu
#
forall a が中にある場合、a は何か一つの型です。
2014/10/07 07:41:54 UTCcutsea110
#
はい
#
そうです
#
そう思っていたので、なんで「forall a. a はすべての型の共通部分であり、{⊥} のはずである。」
#
なのかがさっぱり理解できません。
#
どういうことでしょうか?
2014/10/07 07:47:31 UTCcutsea110
#
そもそもその前段のheteroListの説明もどうも気になります。別に異なる型を一つのリストに押し込んでないですよね、これ。
#
ShowBox型という一つの型にしているわけで。
#
これを異なる型をおなじリストに押し込んだと言うのか?と
#
全部同じ型じゃねーかオイみたいな
2014/10/07 07:52:06 UTCkazu
#
それは単に、説明のあやでしょう。意味を汲んであげましょうよ。
#
こちらの説明の方が分かりやすくありませんか? http://bit.ly/1aserpl
2014/10/07 07:54:09 UTCcutsea110
#
理解できてないので意味の汲みようがないです。
#
maoeさんのblogですか、ちょっと読んでみます
2014/10/07 07:57:17 UTCkazu
#
存在型がない場合、異なる型の値を一つのリストに格納することはできません。
#
存在型がある場合、それが可能になります。
#
と、言いたいだけですよね?
#
存在型のおかげで、同じ型になるので、リストに入れるのは同じ型ですけど。
2014/10/07 08:06:48 UTCcutsea110
#
コメント欄を見て思い出した
#
これ既読だー
#
「悪い事をした社員が存在するならば、社長は辞任する」と「どんな社員であれ悪いことしたら、社長は辞任する」ということだと思うんだけど
#
等価であることは認めるんだけど、これforallの方って結局「任意の社員の中で誰であってもいいんだが悪いことしたら」ということが起きた瞬間に存在量化子と区別なくなる気がして
#
どうも∀と∃とがちゃんと別のものとして見えない
#
いや、等価だって言ってるんでいいんだけど
#
なんというか、違うものが同じものだったという感じじゃなくて、そもそも違う風に見えなくないですか?って感じです。
2014/10/07 08:21:16 UTCcutsea110
#
forall a.[a]と[forall a.a]の違いに気付いた...
#
でもやっぱり共通集合だというところが飛躍してる気がする。もう少し行間を書いて欲しいぞ