O mais próximo que eu posso ver é usando reifyModule
e thisModule
, mas isso não funciona.
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
main = putStrLn $(LitE . StringL . show <$> thisModule)
(sem surpresa) devolve Module (PkgName "main") (ModName "Main")
independentemente do nome do arquivo.
Respostas:
4 para resposta № 1Você pode obtê-lo usando location
.
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
main = putStrLn $(LitE . StringL . loc_filename <$> location)