Oggi ho iniziato a conoscere GADTs da: haskell.org e https://wiki.haskell.orgCome autorizzi i GADT in Haskell?
Purtroppo, non so come usarli. Se corro il codice dall'esempio ricevo il seguente errore:
[1 of 1] Compiling Main (test.hs, interpreted)
AFP_229.hs:31:1:
Illegal generalised algebraic data declaration for `Term'
(Use GADTs to allow GADTs)
In the data declaration for `Term'
Failed, modules loaded: none.
Prelude>
Questo è il codice che sto usando:
data Term a where
Lit :: Int -> Term Int
Succ :: Term Int -> Term Int
IsZero :: Term Int -> Term Bool
If :: Term Bool -> Term a -> Term a -> Term a
Pair :: Term a -> Term b -> Term (a,b)
Ho provato altri codice di esempio, ma questo mi dà lo stesso errore . Come autorizzi i GADT?
Utilizzare un'opzione del compilatore o un pragma. https://downloads.haskell.org/~ghc/7.8.2/docs/html/users_guide/ghc-language-features.html#options-language –