Frage GHC akzeptiert keine Signatur vom Typ GADT


Diese Deklaration funktioniert nicht:

data Identity a where {Identity :: (->) a (Identity a)}

Wie behebe ich das?


7
2018-05-10 06:31


Ursprung


Antworten:


Zumindest ab GHC 7.8, Wenn Sie die GADT-Unterstützung aktivieren, überprüft Ihr Code und stellt sicher, was Sie erwarten:

{-# LANGUAGE GADTs #-}
data Identity a where {Identity :: (->) a (Identity a)}

ergebend:

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

2
2017-11-29 05:47