今天,我开始从以下网址开始了解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?
在Use GADTS to allow GADTS
外观野生:)
基本上有两种启用语言扩展的方法:
路径-X<extensions>
到ghc
,例如ghc -XGADTS
放在{-# LANGUAGE <extension> #-}
文件的顶部,例如{-# LANGUAGE GADTs #-}
最初,错误消息如下所示:Use -XGADTs to allow GADTs
,但实际上语言用法(第二种方式)更为常见,人们开始抱怨很难从错误消息中复制n-paste扩展名,因此将-X
其删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句