Я играю с некоторыми типами и компилятором PureScript. Это типы, которые я создал (украдено из purescript-dsl-example ):
newtype User = User
{ id :: Int
, name :: String
}
data Command a = Add User a
| Remove Int a
| ChangeName Int String a
Этот тип проверяет и компилирует. Затем, подумав, что было бы полезно иметь возможность сериализации этих типов в JSON, я установил purescript-foreign-generic
и добавил:
derive instance genericCommand :: Generic Command _
В качестве первого шага к экземпляру Show.
Затем средство проверки типов выдает эту ошибку:
Error found:
in module Main
at src/Main.purs:33:43 - 33:50 (line 33, column 43 - line 33, column 50)
Could not match kind
Type
with kind
Type -> Type
while checking the kind of Generic Command (Sum (Constructor "Add" (Product ... ...)) (Sum (Constructor "Remove" ...) (Constructor "ChangeName" ...)))
in value declaration genericCommand
Есть ли способ получить экземпляр Generi c из моего типа? Если нет, то есть ли способ написать экземпляр Generi c вручную? Я понятия не имею, что это повлечет за собой, поэтому я согласен с тем, что не уверен, что последний вопрос имеет смысл.