blob: eb948b98ed0f4a1b6252fe04d3f2dca03540c86a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
{-# LANGUAGE ImplicitParams #-}
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
funcToReify :: (?z :: Int) => Int
funcToReify = ?z
$( [d|
f :: (?x :: Int) => Int
f = let ?y = 2 in ?x + ?y |] )
main = do
putStrLn $(lift . pprint =<< reify 'funcToReify)
print (let ?x = 3 in f)
print $( [| let ?x = 1 in ?x |] )
print $(letE [implicitParamBindD "y" (lift (2 :: Int))]
(implicitParamVarE "y") )
putStrLn $( lift . pprint =<< [d|
f :: (?x :: Int) => Int
f = let ?y = 2 in ?x + ?y |] )
|