Ответ 1
Вы можете использовать расширение GHC, называемое StandaloneDeriving
.
С помощью этого расширения вы можете писать выражения типа:
deriving instance Show Token
Чтобы использовать это, поместите
{-# LANGUAGE StandaloneDeriving #-}
в верхней части файла.
Синтаксис для автономного вывода по существу точно такой же, как синтаксис для оператора instance
, за исключением предшествующего deriving
и без предложения where
. Это означает, что вы можете написать более конкретный экземпляр, например:
deriving instance Show a => Foo (Maybe a)
Вы также должны явно указать контекст, необходимый для вашего экземпляра. Вам нужно будет написать отдельный экземпляр, например:
deriving instance Show a => Show (Foo a)
То есть, вам нужно явно указать необходимый контекст Show a
.
Это не должно возникать в вашем случае, но это нужно иметь в виду.