Допустим, у меня есть такой тип:
data MyError = CustomError | ProcessExecError !SomeException deriving (Show, Generic)
instance ToJSON MyError where
toJSON = genericToJSON defaultOptions
Это не скомпилируется с:
No instance for (ToJSON SomeException)
Поэтому я переписываю так:
instance ToJSON FlockError where
toJSON (ProcessExecError _ _) = "ProcessExecError"
toJSON otherType = genericToJSON defaultOptions otherType
Это все еще не с:
• No instance for (ToJSON SomeException)
arising from a use of ‘genericToJSON’
• In the expression: genericToJSON defaultOptions otherType
In an equation for ‘toJSON’:
toJSON otherType = genericToJSON defaultOptions otherType
In the instance declaration for ‘ToJSON FlockError’
|
47 | toJSON otherType = genericToJSON defaultOptions otherType
Мой вопрос, почему? Почему сопоставление с образцом не позволяет мне написать это, учитывая, что только ProcessExecError
имеет аргумент SomeException
?