1
2つのリストを追加しようとしましたが、型の使用を考えました。OCamlで型を返す
type x = int list;
let add (elem1 : int) (elem2 :int) =
elem1 + elem2;;
let add2Lists (a : x) (b : x) =
List.map2 add a b;;
驚いたことに、add2Listsはx - > x - > int listを返します。 intリストは本質的に型と同じですが、add2Listsを文字通りx型の値に評価する方法を教えてください。の種類に依存して、特定のタイプ(の彼らは(に評価し、実際に)返す関数が種類を返しませんが、参考までに値を
let add2Lists (a : x) (b : x) : x =
List.map2 add a b;;
:
ありがとうございます!申し訳ありませんが、新しい言語です。 「:x」の部分が何を意味するのか説明できますか? これはちょうどx型の値を返すと言っていますか?またはそれより大きな意味がある – halapgos1
':x'構文はいくつかの異なる構文で現れますが、"基本的な "意味は常に"私は '': 'の左側にあるものが' x'型であると主張します。唯一の問題は、左に何があるのか...引数の場合は、それは 'a'、次に' b'です。カッコはそれを明確にします。 'let'宣言や式の最後の':x'の場合は、関数(引数付き)が作成されているかどうかによって異なります。そうであれば、関数の結果の型に適用されます。そうでない場合は、パターン(通常は単一の変数)に適用されます。 – antron
'let foo:int = ...' 'foo'は' int'型でなければならないが、 'let fx:int = ...'は 'f'が何かから' int 'である。それはちょっと混乱していて、私の好きな構文部分ではありません。 – antron