Как создать экземпляры класса типов продвинутого типа?

У меня есть тип данных, который я продвигаю через DataKinds в ghc 7.4.1, и заданный класс типов, который я хочу использовать для выполнения операций, специфичных для типов.

data Type = TInt32 | TInt64 | TInt16
class TypeTraits a where
 ...

И затем я пытаюсь создать экземпляры класса типов продвинутых типов, например так:

instance TypeTraits TInt32 where
 ...

Я получаю ошибки следующего типа:

Kind mis-match
The first argument of `TypeTraits' should have kind `*',
but `TInt32' has kind `Type'
In the instance declaration for `TypeTraits TInt32'

пытаясь исправить это, указав тип 'a':

class TypeTraits (a :: Type) where
 ...

Kind mis-match
Expected kind `ArgKind', but `a' has kind `Type'
In the type `a -> String'
In the class declaration for `TypeTraits'
6
задан Chetan 23 April 2012 в 19:07
поделиться