我来到 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(使用前将#替换为@)