关键是我已经定义了一个函数,它给出了一个字符串列表,它在Q monad中返回一个Dec列表。签名就是这个。
gen_allv_str_list :: [String] -> Q [Dec]
当我在拼接中执行它时,得到一个错误,如果我在拼接中不能执行Q [Dec]。
这是拼接执行的地方
callGenerators :: Q Bool
callGenerators = do
$(gen_allv_str_list (notDefTypes uutTypesStr))
$(gen_arb_str_list (notDefTypes uutTypesStr))
return True
我得到的错误:
Couldn't match type `[Dec]' with `Exp'
Expected type: ExpQ
Actual type: Q [Dec]
In the expression: gen_allv_str_list (notDefTypes uutTypesStr)
In the splice: $(gen_allv_str_list (notDefTypes uutTypesStr))
我需要通过执行在不同函数中使用的代码创建的实例。如果你能给我一些关于这个问题的线索,我将非常感激。