我想要一个TemplateHaskell函数variablesInScope :: Q [Name],该函数返回作用域中所有变量的Name的列表。 TemplateHaskell显然具有此信息,以实现reify :: Name -> Q InfolookupValueName :: 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/

10-10 11:59