diff options
| author | hallgren <hallgren@chalmers.se> | 2013-09-19 18:23:47 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2013-09-19 18:23:47 +0000 |
| commit | 3d5b9bd1fd46a51651cbfbd45f03e5b878aebbac (patch) | |
| tree | 24e9cae9268da60b1a0d633ab4d9f970deee3905 /src/compiler/GF/Compile/Compute/AppPredefined.hs | |
| parent | c08f42ce9f1a0dc123896a8c94da24bb19756141 (diff) | |
Make Ident abstract; imports of Data.ByteString.Char8 down from 29 to 16 modules
Most of the explicit uses of ByteStrings were eliminated by using identS,
identS = identC . BS.pack
which was found in GF.Grammar.CF and moved to GF.Infra.Ident. The function
prefixIdent :: String -> Ident -> Ident
allowed one additional import of ByteString to be eliminated. The functions
isArgIdent :: Ident -> Bool
getArgIndex :: Ident -> Maybe Int
were needed to eliminate explicit pattern matching on Ident from two modules.
Diffstat (limited to 'src/compiler/GF/Compile/Compute/AppPredefined.hs')
| -rw-r--r-- | src/compiler/GF/Compile/Compute/AppPredefined.hs | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/compiler/GF/Compile/Compute/AppPredefined.hs b/src/compiler/GF/Compile/Compute/AppPredefined.hs index d4b6dfb41..869052e0a 100644 --- a/src/compiler/GF/Compile/Compute/AppPredefined.hs +++ b/src/compiler/GF/Compile/Compute/AppPredefined.hs @@ -16,14 +16,13 @@ module GF.Compile.Compute.AppPredefined ( isInPredefined, typPredefined, arrityPredefined, predefModInfo, appPredefined ) where -import GF.Infra.Ident +import GF.Infra.Ident(identS) import GF.Infra.Option import GF.Data.Operations import GF.Grammar import GF.Grammar.Predef import qualified Data.Map as Map -import qualified Data.ByteString.Char8 as BS import Text.PrettyPrint import Data.Char (isUpper,toUpper,toLower) @@ -90,11 +89,8 @@ primitives = Map.fromList fun from to = oper (mkFunType from to) oper ty = ResOper (Just (noLoc ty)) Nothing - varL :: Ident - varL = identC (BS.pack "L") - - varP :: Ident - varP = identC (BS.pack "P") + varL = identS "L" + varP = identS "P" appPredefined :: Term -> Err (Term,Bool) appPredefined t = case t of @@ -127,7 +123,7 @@ appPredefined t = case t of (EInt i, EInt j) | f == cLessInt -> retb $ if i<j then predefTrue else predefFalse (EInt i, EInt j) | f == cPlus -> retb $ EInt $ i+j (_, t) | f == cShow && notVar t -> retb $ foldrC $ map K $ words $ render (ppTerm Unqualified 0 t) - (_, K s) | f == cRead -> retb $ Cn (identC (BS.pack s)) --- because of K, only works for atomic tags + (_, K s) | f == cRead -> retb $ Cn (identS s) --- because of K, only works for atomic tags (_, t) | f == cToStr -> trm2str t >>= retb _ -> retb t ---- prtBad "cannot compute predefined" t |
