我有一个返回动态绑定Type
的函数 - 本质上是ConT $ mkName "MyType"
。当然,实际功能要复杂得多,足以让我为它编写测试,最好是清晰易读。但是以下内容:
import Language.Haskell.TH
import MyTypeModule (MyType)
myFn :: Type
myFn = ConT $ mkName "MyType"
test = ... $ do
m <- runQ [t| MyType |]
myFn `shouldBe` m
永远会失败,因为m
将解析为ConT MyTypeModule.MyType
而不是ConT MyType
。
有没有一种很好的方法可以将myFn
类型转换为完全限定的类型,或者检查m
和myFn
是否相同(在当前上下文中)?
答案 0 :(得分:1)
哇,很久没有答案了,但永远不会太晚,无法在互联网上发布答案!
{% include header.html' %}
使用myFn = ConT ''MyType
语言扩展名启用了刻度,并在此处进行了记录: