7
kabul etmiyor?GHC Bu bildirim çalışmıyor GADT tipi imzasını
kabul etmiyor?GHC Bu bildirim çalışmıyor GADT tipi imzasını
En azından o zaman, GADT desteğiyle ilgili kod typechecks çevirip yaparsa ghc 7.8, itibariyle ne beklediğiniz:
{-# LANGUAGE GADTs #-}
data Identity a where {Identity :: (->) a (Identity a)}
sonuçlanan:
GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main (foo.hs, interpreted)
Ok, modules loaded: Main.
λ» :i Identity
data Identity a = Identity a -- Defined at foo.hs:2:1
GHC 7.6'da çalışmıyor. – ThePiercingPrince
Kullanım infix biçimi '->. Neden bir fark yarattığına dair hiçbir fikrim yok ama aslında öyle. (yani… veri… burada {Identity :: a -> Identity a} ') – jgriego
Bu, daha önce yapılmamışsa bir hata olarak bildirilmelidir. – kosmikus
@ qu4ntumcpa: fark, GADT yapıcısı bildirimlerindeki imzaların, başka herhangi bir yerde izin verilmeyen katılık ek açıklamaları ('!') Içerebileceğidir. GHC'nin GADT tipi imzalar ve diğer tip imzalar için iki ayrı grameri olduğunu sanıyorum. Ayrıca, bazı (zayıf!) Argümanların kurucuların gerçekten fonksiyon olmadığını ve önek sözdizimi '(->)' türünün onun üzerinde özgürce genelleştirebileceğinizi öne sürdüm (ki bu da doğru değil). '!'). –