summaryrefslogtreecommitdiff
path: root/testsuite/tests/th/TH_implicitParams.hs
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 |] )