summaryrefslogtreecommitdiff
path: root/src/GF/Grammar/AppPredefined.hs
diff options
context:
space:
mode:
authoraarne <unknown>2005-06-26 19:40:31 +0000
committeraarne <unknown>2005-06-26 19:40:31 +0000
commitb9e13711db0085b25e9257d1034b43a3a2c47b7e (patch)
tree1c107ae9536d56e43c9e9c3891066cd4c04aec63 /src/GF/Grammar/AppPredefined.hs
parent5d6bb705e66343a030ba242175a031e839be2aee (diff)
Finnish close to production ; Predef.occurs
Diffstat (limited to 'src/GF/Grammar/AppPredefined.hs')
-rw-r--r--src/GF/Grammar/AppPredefined.hs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/GF/Grammar/AppPredefined.hs b/src/GF/Grammar/AppPredefined.hs
index 1ec023a63..da81c0d83 100644
--- a/src/GF/Grammar/AppPredefined.hs
+++ b/src/GF/Grammar/AppPredefined.hs
@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
--- > CVS $Date: 2005/04/21 16:22:19 $
--- > CVS $Author: bringert $
--- > CVS $Revision: 1.11 $
+-- > CVS $Date: 2005/06/26 20:40:33 $
+-- > CVS $Author: aarne $
+-- > CVS $Revision: 1.12 $
--
-- Predefined function type signatures and definitions.
-----------------------------------------------------------------------------
@@ -41,6 +41,7 @@ typPredefined c@(IC f) = case f of
"eqStr" -> return $ mkFunType [typeTok,typeTok] (cnPredef "PBool")
"length" -> return $ mkFunType [typeTok] (cnPredef "Int")
"occur" -> return $ mkFunType [typeTok,typeTok] (cnPredef "PBool")
+ "occurs" -> return $ mkFunType [typeTok,typeTok] (cnPredef "PBool")
"plus" -> return $ mkFunType [cnPredef "Int",cnPredef "Int"] (cnPredef "Int")
---- "read" -> (P : Type) -> Tok -> P
"show" -> return $ mkProd -- (P : PType) -> P -> Tok
@@ -77,6 +78,7 @@ appPredefined t = case t of
("dp", EInt i, K s) -> retb $ K (drop (max 0 (length s - i)) s)
("eqStr",K s, K t) -> retb $ if s == t then predefTrue else predefFalse
("occur",K s, K t) -> retb $ if substring s t then predefTrue else predefFalse
+ ("occurs",K s, K t) -> retb $ if any (flip elem t) s then predefTrue else predefFalse
("eqInt",EInt i, EInt j) -> retb $ if i==j then predefTrue else predefFalse
("lessInt",EInt i, EInt j) -> retb $ if i<j then predefTrue else predefFalse
("plus", EInt i, EInt j) -> retb $ EInt $ i+j