【.NET】F#について語れ【OCAML】
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
400:デフォルトの名無しさん 08/12/30 02:53:51 >>392 普通にかけないんだけどなにが普通なんだ? let x = 2 and y = 1;; どういう仕様なんだと思ったけどandの前に改行がいるんだな 401:デフォルトの名無しさん 09/01/04 21:03:52 天才ども教えてくれ let f a b c = match a, b, c with | Some a, Some b, Some c -> Some (a, b, c) | _ -> None と定義して、以下を実行すると value restriction と言われて結果が None に ならない。 f (Some 3) None (Some 1.5) 分かる人いる? そもそもvalue restrictionとは何なのか。 402:デフォルトの名無しさん 09/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 だもんで型注釈に頼るような場面は少ないように思われる
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5385日前に更新/121 KB
担当:undef