Каков синтаксис видов ограничений для GHC 7.4.1? - PullRequest
20 голосов
/ 26 февраля 2012

Я получаю сообщение об ошибке, что 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)

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

1 Ответ

26 голосов
/ 26 февраля 2012

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

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

...