Каков синтаксис видов ограничений для GHC 7.4.1?

Я получаю сообщение об ошибке, что Constraint не входит в область действия, когда я пытаюсь написать простой пример,

{-# LANGUAGE UndecidableInstances,
            MultiParamTypeClasses,
            KindSignatures,
            Rank2Types,
            ConstraintKinds,
            FlexibleInstances,
            OverlappingInstances,
            TypeFamilies #-}

type family A a :: Constraint

Ошибка в том,

> ghci test.hs
[1 of 1] Compiling Main             ( test.hs, interpreted )

test.hs:10:20: Not in scope: type constructor or class `Constraint'
Failed, modules loaded: none.

Похоже, что синонимы ограничения работают так, как ожидалось.

type ShowOrd a = (Ord a, Show a)

Заранее спасибо.


person gatoatigrado    schedule 26.02.2012    source источник


Ответы (1)


Ваша ошибка, по-видимому, вызвана тем, что Constraint, что неудивительно, не входит в область действия. Вы захотите импортировать его из GHC.Prim или от GHC.Exts.

Кажется немного странным, что включение ConstraintKinds не включает его автоматически, как это происходит в сборке моментальных снимков 7.3.2, которая у меня лежала без дела, но вот так.

person C. A. McCann    schedule 26.02.2012
comment
Есть ли официальное место для импорта вместо GHC.Prim. Тот, который может позволить ему работать с другими компиляторами, поддерживающими эти расширения. - person semicolon; 30.04.2016