summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2012-10-24 22:40:18 +0000
committerhallgren <hallgren@chalmers.se>2012-10-24 22:40:18 +0000
commit619c341ee9971bb6f8c263df2e8e84b4e06923ec (patch)
treee5f7b9107c542f8e0df5f6090217a3e81e478b44
parent9f8c0f86f1ab8d49d4b45c29fafcf815a4384ba6 (diff)
GF.Grammar.Macros: add function composPattOp
For Patt, analogous to composOp for Term.
-rw-r--r--src/compiler/GF/Grammar/Macros.hs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/compiler/GF/Grammar/Macros.hs b/src/compiler/GF/Grammar/Macros.hs
index bf7e7047b..37054b98a 100644
--- a/src/compiler/GF/Grammar/Macros.hs
+++ b/src/compiler/GF/Grammar/Macros.hs
@@ -483,6 +483,21 @@ composOp co trm =
ImplArg t -> liftM ImplArg (co t)
_ -> return trm -- covers K, Vr, Cn, Sort, EPatt
+composPattOp :: Monad m => (Patt -> m Patt) -> Patt -> m Patt
+composPattOp op patt =
+ case patt of
+ PC c ps -> liftM (PC c) (mapM op ps)
+ PP qc ps -> liftM (PP qc) (mapM op ps)
+ PR as -> liftM PR (mapPairsM op as)
+ PT ty p -> liftM (PT ty) (op p)
+ PAs x p -> liftM (PAs x) (op p)
+ PImplArg p -> liftM PImplArg (op p)
+ PNeg p -> liftM PNeg (op p)
+ PAlt p1 p2 -> liftM2 PAlt (op p1) (op p2)
+ PSeq p1 p2 -> liftM2 PSeq (op p1) (op p2)
+ PRep p -> liftM PRep (op p)
+ _ -> return patt -- converts cases without subpatterns
+
getTableType :: TInfo -> Err Type
getTableType i = case i of
TTyped ty -> return ty