- 402 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:53:07 ]
- >>401
天才じゃないが答えてみる 関数 f の型は val f : 'a option -> 'b option -> 'c option -> ('a * 'b * 'c) option になるわけだけど f (Some 3) None (Some 1.5) という式を評価しても 'b の型は最後まで確定しないわな それはよろしくない(→というのが超大雑把な value restriction の説明) つまり 'b の型を明らかにすれば error を消せる 簡単には適当な型注釈をつけてやれば OK で f (Some 3) (None : int) (Some 1.5) とか、あるいは (f (Some 3) None (Some 1.5) : (int * int * float) option) とかすればよい しかし通常は文脈から 'b が具体的な型に決まることが多い if true then f (Some 3) None (Some 1.5) else f None (Some 1) None だもんで型注釈に頼るような場面は少ないように思われる
|

|