如何在haskell中获取变量名称 [英] How to get variable name in haskell
本文介绍了如何在haskell中获取变量名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
,#a,a)
int a = 5;
print(a);
应该列印
a = 5
?
{ - #LANGUAGE TemplateHaskell # - }
module Pr其中
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
pr ::名称 - > ExpQ
pr n = [| putStrLn($(lift(nameBase n ++=))++ show $(varE n))|]
然后在另一个模块中:
{ - #LANGUAGE TemplateHaskell# - }
import Pr
a =hello
main = $(pr'a)
I came to haskell having some c background knowledge and wondering is there an analog to
#define print( a ) printf( "%s = %d\n", #a, a )
int a = 5;
print( a );
that should print
a = 5
?
解决方案
Here's the TH solution augustss mentioned:
{-# 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) ) |]
then in another module:
{-# LANGUAGE TemplateHaskell #-}
import Pr
a = "hello"
main = $(pr 'a)
这篇关于如何在haskell中获取变量名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文