on master help sign in
squash potential space leaks by using strict foldl
commit8af32d422de6580f4a28f9af6f9e1e1c6cd3c2ad authorraichoo <raichoo@googlemail.com> dateWed 24 Apr 2013, 22:40 (14 years ago) parent6a33c4d
6 files changed+12−12
src/Core/CoreParser.hs+1−1 src/IRTS/CodegenJava.hs+4−4 src/Idris/AbsSyntaxTree.hs+2−2 src/Idris/Parser.hs+1−1 src/Idris/REPLParser.hs+1−1 src/Pkg/Package.hs+3−3
src/Core/CoreParser.hs+1−1
@@ -466,7 +466,7 @@ idrisMakeTokenParser languageDef
466466
467467 number base baseDigit
468468 = do{ digits <- many1 baseDigit
469− ; let n = foldl (\x d -> base*x + toInteger (digitToInt d)) 0 digits
469+ ; let n = foldl' (\x d -> base*x + toInteger (digitToInt d)) 0 digits
470470 ; seq n (return n)
471471 }
472472
src/IRTS/CodegenJava.hs+4−4
@@ -15,7 +15,7 @@ import qualified Control.Monad.Trans as T
1515import Control.Monad.Trans.State
1616import Data.Char
1717import Data.Maybe (fromJust)
18−import Data.List (isPrefixOf, isSuffixOf, intercalate)
18+import Data.List (isPrefixOf, isSuffixOf, intercalate, foldl')
1919import qualified Data.Text as T
2020import qualified Data.Text.IO as TIO
2121import Language.Java.Parser
@@ -255,7 +255,7 @@ mkMainMethod =
255255 )
256256
257257mergeInnerClasses :: [Decl] -> [Decl]
258−mergeInnerClasses = foldl mergeInner []
258+mergeInnerClasses = foldl' mergeInner []
259259 where
260260 mergeInner ((decl@(MemberDecl (MemberClassDecl (ClassDecl priv name targs ext imp (ClassBody body))))):decls)
261261 decl'@(MemberDecl (MemberClassDecl (ClassDecl _ name' _ ext' imp' (ClassBody body'))))
@@ -1480,7 +1480,7 @@ mkExp (SOp LB64Minus args) = mkBinOpExp longType Sub args
14801480mkExp (SOp LB64Times args) = mkBinOpExp longType Mult args
14811481mkExp (SOp LB64UDiv (arg:args)) = do
14821482 (arg:args) <- mapM (mkVarAccess (Just longType)) (arg:args)
1483− return $ foldl (\ exp arg ->
1483+ return $ foldl' (\ exp arg ->
14841484 MethodInv $ PrimaryMethodCall
14851485 ( MethodInv $ PrimaryMethodCall
14861486 ( MethodInv $ TypeMethodCall (J.Name [Ident "BigInteger"])
@@ -1505,7 +1505,7 @@ mkExp (SOp LB64UDiv (arg:args)) = do
15051505mkExp (SOp LB64SDiv args) = mkBinOpExp longType Div args
15061506mkExp (SOp LB64URem (arg:args)) = do
15071507 (arg:args) <- mapM (mkVarAccess (Just longType)) (arg:args)
1508− return $ foldl (\ exp arg ->
1508+ return $ foldl' (\ exp arg ->
15091509 MethodInv $ PrimaryMethodCall
15101510 ( MethodInv $ PrimaryMethodCall
15111511 ( MethodInv $ TypeMethodCall (J.Name [Ident "BigInteger"])
src/Idris/AbsSyntaxTree.hs+2−2
@@ -887,10 +887,10 @@ prettyImp impl = prettySe 10
887887 bracket p 1 $
888888 prettySe 1 f <+>
889889 if impl then
890− foldl fS empty as
890+ foldl' fS empty as
891891 -- foldr (<+>) empty $ map prettyArgS as
892892 else
893− foldl fSe empty args
893+ foldl' fSe empty args
894894 -- foldr (<+>) empty $ map prettyArgSe args
895895 where
896896 fS l r =
src/Idris/Parser.hs+1−1
@@ -274,7 +274,7 @@ pfc = do s <- getPosition
274274pImport :: IParser String
275275pImport = do reserved "import"; f <- identifier; option ';' (lchar ';')
276276 return (toPath f)
277− where toPath n = foldl1 (</>) $ splitOn "." n
277+ where toPath n = foldl1' (</>) $ splitOn "." n
278278
279279-- | A program is a list of declarations, possibly with associated
280280-- documentation strings.
src/Idris/REPLParser.hs+1−1
@@ -66,7 +66,7 @@ pCmd = try (do cmd ["q", "quit"]; eof; return Quit)
6666 <|> do t <- pFullExpr defaultSyntax; return (Eval t)
6767 <|> do eof; return NOP
6868
69− where toPath n = foldl1 (</>) $ splitOn "." n
69+ where toPath n = foldl1' (</>) $ splitOn "." n
7070
7171pOption :: IParser Opt
7272pOption = do discard (symbol "errorcontext"); return ErrContext
src/Pkg/Package.hs+3−3
@@ -71,7 +71,7 @@ buildMods :: [Opt] -> [Name] -> IO ()
7171buildMods opts ns = do let f = map (toPath . show) ns
7272 idris (map Filename f ++ opts)
7373 return ()
74− where toPath n = foldl1 (</>) $ splitOn "." n
74+ where toPath n = foldl1' (</>) $ splitOn "." n
7575
7676testLib :: Bool -> String -> String -> IO Bool
7777testLib warn p f
@@ -93,7 +93,7 @@ rmIBC :: Name -> IO ()
9393rmIBC m = rmFile $ toIBCFile m
9494
9595toIBCFile (UN n) = n ++ ".ibc"
96−toIBCFile (NS n ns) = foldl1 (</>) (reverse (toIBCFile n : ns))
96+toIBCFile (NS n ns) = foldl1' (</>) (reverse (toIBCFile n : ns))
9797
9898installIBC :: String -> Name -> IO ()
9999installIBC p m = do let f = toIBCFile m
@@ -105,7 +105,7 @@ installIBC p m = do let f = toIBCFile m
105105 copyFile f (destdir </> takeFileName f)
106106 return ()
107107 where getDest (UN n) = ""
108− getDest (NS n ns) = foldl1 (</>) (reverse (getDest n : ns))
108+ getDest (NS n ns) = foldl1' (</>) (reverse (getDest n : ns))
109109
110110installObj :: String -> String -> IO ()
111111installObj p o = do d <- getDataDir