gpt4 book ai didi

haskell - 如何获取 TemplateHaskell 命名变量的文字值

转载 作者:行者123 更新时间:2023-12-04 15:25:47 24 4
gpt4 key购买 nike

如果我有 Name 在 TemplateHaskell 中并想找出它命名的变量的值,前提是该变量被声明为文字,可以这样做吗?

var = "foo"
-- Can `contentsOf` be defined?
$((contentsOf . mkName $ "var") >>= guard . (== "foo"))

最佳答案

理论上,是的。在实践中,没有。

使用 reify :: Name -> Q Info 查找有关现有名称的信息,对于这样的定义,你会得到一个 VarI值,其中包括 Maybe Dec field 。这似乎表明您可能在某些情况下能够获得变量声明的语法树,这将允许您提取文字,但是 current versions of GHC always returns Nothing in this field ,所以你对纯 TH 解决方案不走运。

但是,TH 确实允许运行任意 IO 操作,因此您可以通过使用类似 haskell-src-exts 的方式自行加载和解析模块来解决此问题。 ,但是我怀疑这会比它的值(value)更麻烦。

关于haskell - 如何获取 TemplateHaskell 命名变量的文字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9345532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com