在执行模板haskell splice时发出问题以生成新的类实例

时间:2017-07-18 11:56:37

标签: haskell

关键是我已经定义了一个函数,它给出了一个字符串列表,它在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))

我需要通过执行在不同函数中使用的代码创建的实例。如果你能给我一些关于这个问题的线索,我将非常感激。

0 个答案:

没有答案