我有一个简单的模板Haskell程序,它打印当前模块的名称(Main,here):
{-# LANGUAGE TemplateHaskell #-}
module Main
( main
) where
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
modName ? String
modName = $(fmap loc_module qLocation »= ?mod ? return (LitE (StringL mod) ))
main ? IO ()
main = putStrLn modName
Run Code Online (Sandbox Code Playgroud)
当我编译它时,我从ghc获得以下加载消息:
tsuraan@localhost ~/test/modname $ ghc --make Main
[1 of 1] Compiling Main ( Main.hs, Main.o )
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package array-0.4.0.0 ... …Run Code Online (Sandbox Code Playgroud)