是否可以使用模板 haskell 来获取当前文件的名称?
Is it possible to use template haskell to get the name of the current file?
我能看到的最接近的是使用 reifyModule
and thisModule
,但这不起作用。
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
main = putStrLn $(LitE . StringL . show <$> thisModule)
(毫不奇怪)无论文件名如何,都会返回 Module (PkgName "main") (ModName "Main")
。
您可以使用location
获得它。
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
main = putStrLn $(LitE . StringL . loc_filename <$> location)
我能看到的最接近的是使用 reifyModule
and thisModule
,但这不起作用。
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
main = putStrLn $(LitE . StringL . show <$> thisModule)
(毫不奇怪)无论文件名如何,都会返回 Module (PkgName "main") (ModName "Main")
。
您可以使用location
获得它。
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
main = putStrLn $(LitE . StringL . loc_filename <$> location)