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

Я случайно обнаружил, что следующий код отлично компилируется:

class SomeClass a

someValue :: Maybe (SomeClass a)
someValue = undefined

Я использую только классы, связанные с типом ограничений, поэтому я не понимаю, почему этот код typechecks и какова цель использования классов таким образом.

Я нахожусь в GHC 7.6.2.

Ответ 1

Это ошибка в ghc-7.6.2. Это должно быть доброй ошибкой. Сообщите об этом.

Ответ 2

Ошибка.

A.hs: 3: 21:     Класс `SomeClass ', используемый как тип

In the type signature for `someValue':