/ / É possível usar template haskell para obter o nome do arquivo atual? - haskell, template-haskell

É possível usar template haskell para obter o nome do arquivo atual? - haskell, template-haskell

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 № 1

Você pode obtê-lo usando location.

{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax

main = putStrLn $(LitE . StringL . loc_filename <$> location)