diff options
| author | aarne <unknown> | 2005-06-26 19:40:31 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2005-06-26 19:40:31 +0000 |
| commit | b9e13711db0085b25e9257d1034b43a3a2c47b7e (patch) | |
| tree | 1c107ae9536d56e43c9e9c3891066cd4c04aec63 /src/GF/Grammar/AppPredefined.hs | |
| parent | 5d6bb705e66343a030ba242175a031e839be2aee (diff) | |
Finnish close to production ; Predef.occurs
Diffstat (limited to 'src/GF/Grammar/AppPredefined.hs')
| -rw-r--r-- | src/GF/Grammar/AppPredefined.hs | 8 |
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 |
