Пример экзистенциально квантифицированных типов завершается неудачно в ghc 7.2.2 - PullRequest
3 голосов
/ 16 января 2012

Согласно Википедии, следующий код должен скомпилироваться,

{-# 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 ]

5 голосов
/ 16 января 2012

На странице, на которую вы ссылаетесь, упоминается, что exists в качестве ключевого слова не существует, но вы можете получить то же поведение, используя forall. Обратите внимание, что ваш конкретный пример имеет заголовок "(psuedo) haskell".

Они говорят, что это будет эквивалентно:

data T = forall a. MkT a

с

MkT :: forall a. a -> T
1 голос
/ 12 марта 2016

в режиме ghci, должно быть так.

ghci> :set -XRankNTypes

...