2012-02-26 7 views
20

Recibo un error que no es Constraint en su alcance, cuando trato de escribir un ejemplo sencillo,¿Cuál es la sintaxis de tipos de restricciones para GHC 7.4.1?

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

type family A a :: Constraint 

El error es,

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

sinónimos de restricción parecen funcionar como se espera,

type ShowOrd a = (Ord a, Show a) 

Gracias de antemano.

Respuesta

26

Su error parece ser causado por Constraint siendo, como era de esperar, no en el alcance. Deberá importarlo de GHC.Prim o from GHC.Exts.

Parece un poco extraño que habilitar ConstraintKinds no lo ponga en el alcance automáticamente, como lo hace en una compilación de instantánea 7.3.2 que tuve por ahí, pero ya está.

+0

increíble, gracias! – gatoatigrado

+0

¿Hay un lugar oficial para importarlo en lugar de GHC.Prim? Uno que podría permitirle trabajar en otros compiladores que admitan esas extensiones. – semicolon

Cuestiones relacionadas