packages feed

system-uuid-0.0.1: MacroMacros.hs

{-| Macros for macros. 
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

{-# LANGUAGE TemplateHaskell
  #-}

module MacroMacros where


import Control.Applicative
import Language.Haskell.TH
import Language.Haskell.TH.Syntax



presentFile                  =  recover newTH oldTH
 where
  oldTH                      =  do
    reify name 
    return $ InfixE
      (Just $ VarE $ mkName "fileName")
      (VarE $ mkName "<$>")
      (Just $ VarE name)
   where
    name                     =  mkName "currentModule"
  newTH                      =  do 
    return $ InfixE
      (Just $ VarE $ mkName "loc_filename")
      (VarE $ mkName "<$>")
      (Just $ VarE $ mkName "location")


fileName mod                 =  map replace mod ++ ".hs"
 where
  replace '.'                =  '/'
  replace c                  =  c