如何查找类型操作员名称?这不起作用:
IssueTH.hs:
{-# LANGUAGE TemplateHaskell #-}
module IssueTH where
import Language.Haskell.TH
f :: Q [Dec]
f = do
Just n <- lookupTypeName "GHC.TypeLits.*"
return []
Issue.hs:
{-# LANGUAGE TemplateHaskell #-}
module Issue where
import IssueTH
$f
ghc Issue.hs
失败并显示消息:
Pattern match failure in do expression at IssueTH.hs
用"GHC.TypeLits.*"
或"GHC.TypeLits.(*)"
替换"*"
也不起作用。
答案 0 :(得分:3)
我想我现在已经有足够的答案了。唉,我只找到了问题的原因,但没有找到解决方法。
我的测试显示lookupTypeName
支持类型操作符,但前提是它们以:
开头。
最初这是一个要求,与中缀数据构造函数类似,但这被提升为允许像GHC.TypeLits
中的算术类型运算符这样的东西。 (缺点是你不能再使用类型操作符变量,就像Arrow
代码之类的东西一样受欢迎。)
大概lookupTypeName
未更新以考虑到这一点,我为此filed a bug report。
编辑:最终解决了这个问题,应该是即将推出的GHC 8.2.1。