存在量化的类型示例在ghc 7.2.2中失败

时间:2012-01-16 06:56:42

标签: haskell ghc higher-rank-types

根据维基百科,下面的代码应该编译,

{-# LANGUAGE RankNTypes #-}
data T = MkT (exists a. Show a => a)

但是,我没有运气。 ghci 7.2.2抱怨,

test.hs:2:23:
    Illegal symbol '.' in type
    Perhaps you intended -XRankNTypes or similar flag
    to enable explicit-forall syntax: forall <tvs>. <type>
Failed, modules loaded: none.

原始链接位于:http://en.wikibooks.org/wiki/Haskell/Existentially_quantified_types

提前致谢!

2 个答案:

答案 0 :(得分:5)

您链接的页面提到exists作为关键字不存在,但您可以使用forall获得相同的行为。请注意,您的特定示例标题为“(psuedo)haskell”。

他们说这相当于:

data T = forall a. MkT a

MkT :: forall a. a -> T

答案 1 :(得分:1)

在ghci模式中,它应该是这样的。

ghci> :set -XRankNTypes