我想要一个TemplateHaskell函数variablesInScope :: Q [Name]
,该函数返回作用域中所有变量的Name
的列表。 TemplateHaskell显然具有此信息,以实现reify :: Name -> Q Info
和lookupValueName :: String -> Q (Maybe Name)
之类的功能。
我想要的功能是否存在于某个地方而我只是忽略了它?还是可以通过某种方式轻松构建?
最佳答案
不幸的是,您不能仅通过TH
来做到这一点。尝试使用haskell-src-meta
将Haskell模块解析为TH AST
。
但是,将需要Q
monad的IO功能来加载模块。
请引用https://ghc.haskell.org/trac/ghc/ticket/9699#ticket以查看当前的大致规格
关于haskell - 使用TemplateHaskell列出 namespace 中的所有名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26394199/