Ticket #158: Quasi.hs
| File Quasi.hs, 417 bytes (added by arcatan, 3 years ago) |
|---|
| Line | |
|---|---|
| 1 | {-# LANGUAGE DeriveDataTypeable #-} |
| 2 | module Quasi (qq, Var (..)) where |
| 3 | |
| 4 | import Data.Generics |
| 5 | import qualified Language.Haskell.TH as TH |
| 6 | import Language.Haskell.TH.Quote |
| 7 | |
| 8 | data Var = Var String deriving (Data, Typeable, Show) |
| 9 | |
| 10 | qq :: QuasiQuoter |
| 11 | qq = QuasiQuoter qqExp qqPat |
| 12 | |
| 13 | qqExp :: String -> TH.ExpQ |
| 14 | qqExp s = dataToExpQ (const Nothing) (Var s) |
| 15 | |
| 16 | qqPat :: String -> TH.PatQ |
| 17 | qqPat s = dataToPatQ (const Nothing) (Var s) |
