2012-10-04 25 views
11

Bu yeni bir veri türü için tanımı şöyledir:haskell, Ne yapar: +: veri türü tanımında ne anlama gelir?

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

işe yarar: +: ortalama bu tür tanımında?

+0

Standart Haskell'de geçerli değil. Bu garip bir GHC uzantısı :) – singpolyma

+0

@singpolyma: Bu standart [Haskell 98 sözdizimi] (http://www.haskell.org/onlinereport/syntax-iso.html) (_consym_ prodüksiyonuna bakın). Sonuçta, listeler için '' 'kurucu bu sadece özel bir durumdur. Belki de 'TypeOperators' yi mi düşünüyorsun? – hammar

+0

@hammar Oh, hmm, 'TypeOperators' yi düşünüyordum. Veri yapıcıların standart operatörler için kullanılmasının farkında değildim. Bu çok çirkin. Çoğunlukla çirkin şeyler uzantılardır :) – singpolyma

cevap

9

Infix biçiminde yazılmış bir veri kurucudur. : ile başlıyorsa, kurucu olarak bir operatörünüz olabilir.

+5

Yanlışlıkla söylemek gerekirse, ':' büyük harfli bir semboldür: D –

+0

Neden var: + sonra? – Sam

+0

GHC 7.6'dan itibaren 'TypeOperators' eklentisinin artık tüm infix operatörlerini" büyük harf "olarak ele aldığını unutmayın. (Bu infix operatörlerini tür değişkenleri olarak kullanan mevcut kodu bozar ...) –