summaryrefslogtreecommitdiff
path: root/libraries/template-haskell/Language/Haskell/TH/Lib
diff options
context:
space:
mode:
authorJakob Bruenker <jakob.bruenker@gmail.com>2022-03-21 00:14:25 +0100
committerJakob Bruenker <jakob.bruenker@gmail.com>2022-03-31 17:45:37 +0200
commita9c0c69b42657d39f26ab822241900ba0f308dc3 (patch)
treefd59a5e49146ee436e04137b313d8e4178c2bed0 /libraries/template-haskell/Language/Haskell/TH/Lib
parentdda46e2da13268c239db3290720b014cef00c01d (diff)
downloadhaskell-wip/T20768.tar.gz
Implement \cases (Proposal 302)wip/T20768
This commit implements proposal 302: \cases - Multi-way lambda expressions. This adds a new expression heralded by \cases, which works exactly like \case, but can match multiple apats instead of a single pat. Updates submodule haddock to support the ITlcases token. Closes #20768
Diffstat (limited to 'libraries/template-haskell/Language/Haskell/TH/Lib')
-rw-r--r--libraries/template-haskell/Language/Haskell/TH/Lib/Internal.hs5
1 files changed, 5 insertions, 0 deletions
diff --git a/libraries/template-haskell/Language/Haskell/TH/Lib/Internal.hs b/libraries/template-haskell/Language/Haskell/TH/Lib/Internal.hs
index e960f35bb3..5d2a32d761 100644
--- a/libraries/template-haskell/Language/Haskell/TH/Lib/Internal.hs
+++ b/libraries/template-haskell/Language/Haskell/TH/Lib/Internal.hs
@@ -300,9 +300,14 @@ lamE ps e = do ps' <- sequenceA ps
lam1E :: Quote m => m Pat -> m Exp -> m Exp
lam1E p e = lamE [p] e
+-- | Lambda-case (@\case@)
lamCaseE :: Quote m => [m Match] -> m Exp
lamCaseE ms = LamCaseE <$> sequenceA ms
+-- | Lambda-cases (@\cases@)
+lamCasesE :: Quote m => [m Clause] -> m Exp
+lamCasesE ms = LamCasesE <$> sequenceA ms
+
tupE :: Quote m => [Maybe (m Exp)] -> m Exp
tupE es = do { es1 <- traverse sequenceA es; pure (TupE es1)}