我的查询类型为data Query a
鉴于Query
没有构造函数,如何定义类型为eval
的函数:
eval :: Query ~> H.ComponentDSL State Query Void m
我是否必须向Query
添加一个构造函数?
答案 0 :(得分:0)
使用type Query = Const Void
和eval = absurd << un Const
type Query
= Const Void = data Query a
,它们都具有类型Kind -> Kind
,并且没有构造函数。
对于eval = absurd <<< un Const
匹配类型为Query ~> H.ComponentDSL State Query Void m
。 absurd :: forall a. Void -> a
确保返回类型匹配。 un Const :: forall a b -> Const a b -> a
确保输入类型匹配(forall a. Query a -> Void
)