2012-02-26 15 views
20

Dostaję błąd, który Constraint nie jest w zasięgu, gdy próbuję napisać prosty przykład,Jaka jest składnia rodzajów ograniczeń dla GHC 7.4.1?

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

type family A a :: Constraint 

Błąd jest

> 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. 

więzów synonimy wydają się działać zgodnie z oczekiwaniami,

type ShowOrd a = (Ord a, Show a) 

Z góry dziękuję.

Odpowiedz

26

Twój błąd wydaje się być spowodowany przez Constraint, co nie jest niespodzianką, nie jest w zakresie. Będziesz chciał zaimportować go z GHC.Prim lub from GHC.Exts.

Wydaje się nieco dziwne, że włączenie ConstraintKinds nie powoduje automatycznego włączenia zakresu, tak jak w przypadku wersji 7.3.2, którą miałem w pobliżu, ale proszę bardzo.

+0

niesamowite, dzięki! – gatoatigrado

+0

Czy istnieje oficjalne miejsce do importowania go zamiast GHC.Prim. Jeden, który może pozwolić mu działać na innych kompilatorach obsługujących te rozszerzenia. – semicolon

Powiązane problemy