web-dev-qa-db-ja.com

:infix演算子はHaskellで何をしますか?

私は Haskellの穏やかな紹介 (それほど穏やかではありません)を読んでいて、それが何をするかを直接説明せずに:演算子を繰り返し使用しています。

それで、それは正確に何をしますか?

45
moo

:は「追加」演算子です。

x : xs

最初の要素としてxを持ち、その後にxsのすべての要素が続くリストを返します。他の関数型言語では、これは通常consと呼ばれます。これは、空のリストから繰り返し適用することによってリストを再帰的に構築するためです。

1 : 2 : 3 : 4 : []

リストです[1, 2, 3, 4]

72
Konrad Rudolph

チュートリアルの最初のステップではGHC/HUGSをダウンロードすることをお勧めしているため、GHCi/HUGSのタイプを常にチェックすることができます。

Prelude> :t (:)
(:) :: a -> [a] -> [a]
Prelude> :t (++)
(++) :: [a] -> [a] -> [a]

それぞれのタイプから、その使用法を推測するのは非常に簡単です。

PS: http://haskell.org/hoogle/ は素晴らしいです。

22
codebliss

Haskellの:演算子はリストのコンストラクタです。コロンの前にあるものはすべて、その後に指定されたリストに「コンス」されます。

たとえば、整数のリストは、各数値を空のリストに「コンスト」することで作成されます。

リスト [1,2,3,4]は次のように構成できます。

  • 4 : [](4を空のリストと比較)
  • 3 : [4](3を4を含むリストに結合)
  • 2 : [3,4](2を3、4を含むリストに含める)
  • 1 : [2,3,4](2、3、4を含むリストに1を含む)

あなたに与える;

[1,2,3,4]

それは完全に書かれています。

1 : 2 : 3 : 4 : []
16
Ciaran