タプルとリストこのページは最後に更新されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。 last mod. 2010-05-15 (土) 01:03:14
OCamlリストは [1; 2; 3; 4] のようにセミコロンで区切ります。 配列もあり、 [| 1; 2; 3; 4 |] で定義します。 camlp4を使っていれば [< '1; '2; '3; '4 >] がストリーム(遅延リスト)となります。ただし、ストリームの扱いはリストなどとはかなり異なります。 リストの構築はx::xsのようにします。::は演算子ではなく、リスト用の特別な文法要素(キーワード)です。 タプルは0, 1のようにカンマで区切ります。 カッコは必須ではありませんが、一般的には混同しやすいので、極めて明確な場合(let a, b = ... のようなコード)を除いてカッコをつけるべき、とされています。 # 1, 2;; - : int * int = (1, 2) # let a, b = (1, 2);; val a : int = 1 val b : int = 2 # [1, 2];; - : (int * int) list = [(1, 2)] SMLリストは [1, 2, 3, 4] のようにカンマで区切ります。 リストの構築はOCamlと同様にx::xs のようにします。ただし、::は演算子であり、関数とみなせます。 > op::; val it = fn : 'a * 'a list -> 'a list ただし、 SML の演算子は引数をタプルとして受け取るので、部分適用するには fn x => のような書き方が必要となります。 タプルは (1, 2) のようにカッコで括り、カンマで区切ります。OCamlと異なり、カッコは必須となります。 HaskellリストはSMLと同様に[1, 2, 3, 4] のようにカンマで区切ります。 リストの構築はx:xsのように書くこともできる。:は関数とみなすことができます。 タプルはSMLと同様に(1, 2) のようにカッコで括り、カンマで区切ります。 |