今天我开始从以下方面了解GADT: haskell.org 和 https://wiki.haskell.org
不幸的是,我不知道如何使用它们。如果我从示例中运行代码,我会收到以下错误:
[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>
这是我正在使用的代码:
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)
我尝试了其他示例代码,但这给了我同样的错误。你如何允许GADT?