[commit: ghc] wip/nfs-locking: Use Extra library (693a66c)

git at git.haskell.org git at git.haskell.org
Fri Oct 27 00:33:52 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/nfs-locking
Link       : http://ghc.haskell.org/trac/ghc/changeset/693a66cafe77e0ea2449e9f7b4bc51145c97ab38/ghc

>---------------------------------------------------------------

commit 693a66cafe77e0ea2449e9f7b4bc51145c97ab38
Author: Moritz Angermann <moritz.angermann at gmail.com>
Date:   Sat Jan 9 17:04:58 2016 +0800

    Use Extra library
    
    - replaces `wordsWhen` with `wordsBy`
    - replaces `replace` with `replace`
    Fixes #130


>---------------------------------------------------------------

693a66cafe77e0ea2449e9f7b4bc51145c97ab38
 src/Base.hs                 | 23 ++---------------------
 src/Oracles/LookupInPath.hs |  3 ++-
 src/Rules/Data.hs           |  1 +
 src/Rules/Libffi.hs         |  1 +
 4 files changed, 6 insertions(+), 22 deletions(-)

diff --git a/src/Base.hs b/src/Base.hs
index 925c427..fb33907 100644
--- a/src/Base.hs
+++ b/src/Base.hs
@@ -22,9 +22,9 @@ module Base (
     putColoured, putOracle, putBuild, putSuccess, putError, renderBox,
 
     -- * Miscellaneous utilities
-    bimap, minusOrd, intersectOrd, replaceEq, replace, quote, chunksOfSize,
+    bimap, minusOrd, intersectOrd, replaceEq, quote, chunksOfSize,
     replaceSeparators, decodeModule, encodeModule, unifyPath, (-/-),
-    versionToInt, removeFileIfExists, removeDirectoryIfExists, wordsWhen
+    versionToInt, removeFileIfExists, removeDirectoryIfExists
     ) where
 
 import Control.Applicative
@@ -90,25 +90,6 @@ replaceSeparators = replaceWhen isPathSeparator
 replaceWhen :: (a -> Bool) -> a -> [a] -> [a]
 replaceWhen p to = map (\from -> if p from then to else from)
 
--- | Find all occurrences of substring 'from' and replace them to 'to' in a
--- given string. Not very efficient, but simple and fast enough for our purposes
-replace :: Eq a => [a] -> [a] -> [a] -> [a]
-replace from to = go
-  where
-    skipFrom = drop $ length from
-    go [] = []
-    go s @ (x : xs)
-        | from `isPrefixOf` s = to ++ go (skipFrom s)
-        | otherwise           = x  :  go xs
-
--- | Split a list into chunks in places where the predicate @p@ holds.
--- See: http://stackoverflow.com/a/4981265
-wordsWhen :: Eq a => (a -> Bool) -> [a] -> [[a]]
-wordsWhen p list =
-    case dropWhile p list of
-        [] -> []
-        l  -> w : wordsWhen p rest where (w, rest) = break p l
-
 -- | @chunksOfSize size strings@ splits a given list of strings into chunks not
 -- exceeding the given @size at .
 chunksOfSize :: Int -> [String] -> [[String]]
diff --git a/src/Oracles/LookupInPath.hs b/src/Oracles/LookupInPath.hs
index c2a05e2..2532cb9 100644
--- a/src/Oracles/LookupInPath.hs
+++ b/src/Oracles/LookupInPath.hs
@@ -4,6 +4,7 @@ module Oracles.LookupInPath (
     ) where
 
 import Base
+import Extra (wordsBy)
 
 newtype LookupInPath = LookupInPath String
     deriving (Show, Typeable, Eq, Hashable, Binary, NFData)
@@ -22,7 +23,7 @@ lookupInPath c
 lookupInPathOracle :: Rules ()
 lookupInPathOracle = do
     o <- newCache $ \c -> do
-        envPaths <- wordsWhen (== ':') <$> getEnvWithDefault "" "PATH"
+        envPaths <- wordsBy (== ':') <$> getEnvWithDefault "" "PATH"
         let candidates = map (-/- c) envPaths
         -- this will crash if we do not find any valid candidate.
         fullCommand <- head <$> filterM doesFileExist candidates
diff --git a/src/Rules/Data.hs b/src/Rules/Data.hs
index de4f8c0..b2c5878 100644
--- a/src/Rules/Data.hs
+++ b/src/Rules/Data.hs
@@ -2,6 +2,7 @@ module Rules.Data (buildPackageData) where
 
 import Base
 import Expression
+import Extra (replace)
 import GHC
 import Oracles
 import Predicates (registerPackage)
diff --git a/src/Rules/Libffi.hs b/src/Rules/Libffi.hs
index 9d77814..31f249b 100644
--- a/src/Rules/Libffi.hs
+++ b/src/Rules/Libffi.hs
@@ -2,6 +2,7 @@ module Rules.Libffi (libffiRules, libffiDependencies) where
 
 import Base
 import Expression
+import Extra (replace)
 import GHC
 import Oracles
 import Rules.Actions



More information about the ghc-commits mailing list