summaryrefslogtreecommitdiff
path: root/libraries/template-haskell/Language/Haskell/TH/Syntax.hs
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/template-haskell/Language/Haskell/TH/Syntax.hs')
-rw-r--r--libraries/template-haskell/Language/Haskell/TH/Syntax.hs20
1 files changed, 15 insertions, 5 deletions
diff --git a/libraries/template-haskell/Language/Haskell/TH/Syntax.hs b/libraries/template-haskell/Language/Haskell/TH/Syntax.hs
index 4e0a1c9330..294e443afb 100644
--- a/libraries/template-haskell/Language/Haskell/TH/Syntax.hs
+++ b/libraries/template-haskell/Language/Haskell/TH/Syntax.hs
@@ -1601,9 +1601,10 @@ data Exp
| UnboxedSumE Exp SumAlt SumArity -- ^ @{ (\#|e|\#) }@
| CondE Exp Exp Exp -- ^ @{ if e1 then e2 else e3 }@
| MultiIfE [(Guard, Exp)] -- ^ @{ if | g1 -> e1 | g2 -> e2 }@
- | LetE [Dec] Exp -- ^ @{ let x=e1; y=e2 in e3 }@
+ | LetE [Dec] Exp -- ^ @{ let { x=e1; y=e2 } in e3 }@
| CaseE Exp [Match] -- ^ @{ case e of m1; m2 }@
| DoE [Stmt] -- ^ @{ do { p <- e1; e2 } }@
+ | MDoE [Stmt] -- ^ @{ mdo { x <- e1 y; y <- e2 x; } }@
| CompE [Stmt] -- ^ @{ [ (x,y) | x <- xs, y <- ys ] }@
--
-- The result expression of the comprehension is
@@ -1628,6 +1629,7 @@ data Exp
-- it could either have a variable name
-- or constructor name.
| LabelE String -- ^ @{ #x }@ ( Overloaded label )
+ | ImplicitParamVarE String -- ^ @{ ?x }@ ( Implicit parameter )
deriving( Show, Eq, Ord, Data, Generic )
type FieldExp = (Name,Exp)
@@ -1647,10 +1649,11 @@ data Guard
deriving( Show, Eq, Ord, Data, Generic )
data Stmt
- = BindS Pat Exp
- | LetS [ Dec ]
- | NoBindS Exp
- | ParS [[Stmt]]
+ = BindS Pat Exp -- ^ @p <- e@
+ | LetS [ Dec ] -- ^ @{ let { x=e1; y=e2 } }@
+ | NoBindS Exp -- ^ @e@
+ | ParS [[Stmt]] -- ^ @x <- e1 | s2, s3 | s4@ (in 'CompE')
+ | RecS [Stmt] -- ^ @rec { s1; s2 }@
deriving( Show, Eq, Ord, Data, Generic )
data Range = FromR Exp | FromThenR Exp Exp
@@ -1729,6 +1732,12 @@ data Dec
-- pattern synonyms are supported. See 'PatSynArgs' for details
| PatSynSigD Name PatSynType -- ^ A pattern synonym's type signature.
+
+ | ImplicitParamBindD String Exp
+ -- ^ @{ ?x = expr }@
+ --
+ -- Implicit parameter binding declaration. Can only be used in let
+ -- and where clauses which consist entirely of implicit bindings.
deriving( Show, Eq, Ord, Data, Generic )
-- | Varieties of allowed instance overlap.
@@ -2015,6 +2024,7 @@ data Type = ForallT [TyVarBndr] Cxt Type -- ^ @forall \<vars\>. \<ctxt\> => \<t
| ConstraintT -- ^ @Constraint@
| LitT TyLit -- ^ @0,1,2, etc.@
| WildCardT -- ^ @_@
+ | ImplicitParamT String Type -- ^ @?x :: t@
deriving( Show, Eq, Ord, Data, Generic )
data TyVarBndr = PlainTV Name -- ^ @a@