aboutsummaryrefslogtreecommitdiff
path: root/hypsrc-test/src/TemplateHaskellQuasiquotes.hs
blob: 6d4049211e5007a6d24b9a98e3cee8bdd7666159 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{-# LANGUAGE TemplateHaskell #-}

module TemplateHaskellQuasiquotes where

import Language.Haskell.TH

aDecl :: DecsQ
aDecl = [d|
    bar :: $aType -> [ (Int, String) ]
    bar $aPattern = $anExpression
  |]

aPattern :: PatQ
aPattern = [p|
    [ aCrazyLongVariableName
    , _unused
    , (y, z)
    , ( $aNumberPattern, "hello")
    ]
  |]

aNumberPattern :: PatQ
aNumberPattern = [p|
    w@v@4.5
  |]

anExpression, anExpression2 :: ExpQ
anExpression = [e|
    [ (1 + $anExpression2, "world") ]
  |]
anExpression2 = [| (1 + round pi) |]

aType :: TypeQ
aType = [t|
    [ (Double, String) ]
  |]