使用 mkName 测试模板 Haskell

Testing Template Haskell with mkName

我有一个 returns 动态绑定 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 类型转换为完全限定的类型,或者检查 mmyFn 是否相同(在当前上下文中)?

哇好久没有答案了,不过 post 网上的答案永远不会太迟!

myFn = ConT ''MyType

刻度已通过 -XTemplateHaskell 语言扩展启用,并记录在此处:

https://hackage.haskell.org/package/template-haskell-2.13.0.0/docs/Language-Haskell-TH-Syntax.html#t:Name