如何在haskell中获取变量名称

2024-05-16

我来到 haskell 时有一些 c 背景知识,想知道是否有类似的

#define print( a ) printf( "%s = %d\n", #a, a )

int a = 5;
print( a );

应该打印

a = 5

?


这是 augustss 提到的 TH 解决方案:

{-# LANGUAGE TemplateHaskell #-}
module Pr where
import Language.Haskell.TH
import Language.Haskell.TH.Syntax

pr :: Name -> ExpQ
pr n = [| putStrLn ( $(lift (nameBase n ++ " = ")) ++ show $(varE n) ) |]

然后在另一个模块中:

{-# LANGUAGE TemplateHaskell #-}
import Pr
a = "hello"
main = $(pr 'a)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在haskell中获取变量名称 的相关文章

随机推荐