2012-10-04 12 views
11

これは、新しいデータ型の定義である:+:haskellでは、+はデータ型定義の意味ですか?

data Total a = Total a :+: Total a 
       |... 

何をしないこのタイプの定義に意味ですか?

+0

標準のHaskellでは無効です。これは奇妙なGHC拡張です:) – singpolyma

+0

@singpolyma:標準です[Haskell 98構文](http://www.haskell.org/onlinereport/syntax-iso.html)(_consym_ productionを参照)。結局のところ、リストの ':'コンストラクタはこれの特別なケースです。おそらくあなたは 'TypeOperators'を考えていたでしょうか? – hammar

+0

@hammarああ、うーん、私は 'TypeOperators'を考えていました。私はデータコンストラクタのための演算子を使用することが標準であることを知らなかった。それは非常に醜いです。通常は醜いものは拡張です:) – singpolyma

答えて

9

これは、インフィックス形式で書かれたデータコンストラクタです。 :で始まる場合、演算子をコンストラクタとして持つことができます。

+5

それを軽快に書くために、 ':'は大文字の記号です:D –

+0

なぜですか? – Sam

+0

GHC 7.6のように、 'TypeOperators'拡張は全ての中置演算子を"大文字 "として扱うようになりました。 (中置演算子を型変数として使用していた既存のコードを分解する...) –

関連する問題