我最接近的是使用reifyModule
和thisModule
,但这不起作用。
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
main = putStrLn $(LitE . StringL . show <$> thisModule)
(不出所料)无论文件名如何都会返回Module (PkgName "main") (ModName "Main")
。
答案 0 :(得分:4)
您可以使用location
获取它。
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
main = putStrLn $(LitE . StringL . loc_filename <$> location)