diff options
author | Jakob Bruenker <jakob.bruenker@gmail.com> | 2022-03-21 00:14:25 +0100 |
---|---|---|
committer | Jakob Bruenker <jakob.bruenker@gmail.com> | 2022-03-31 17:45:37 +0200 |
commit | a9c0c69b42657d39f26ab822241900ba0f308dc3 (patch) | |
tree | fd59a5e49146ee436e04137b313d8e4178c2bed0 /libraries/template-haskell/Language/Haskell/TH/Lib | |
parent | dda46e2da13268c239db3290720b014cef00c01d (diff) | |
download | haskell-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.hs | 5 |
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)} |