summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonpj <unknown>2005-05-23 09:50:26 +0000
committersimonpj <unknown>2005-05-23 09:50:26 +0000
commit9af07e05719cba32911e8832eeee96bccb14ea1d (patch)
treecd3a5edf22b986c49e79366ae1b9bbc0c8b0e7b8
parent4c03d4ee9f9a1544608c3f8ee65ee59c30e9b8df (diff)
downloadhaskell-9af07e05719cba32911e8832eeee96bccb14ea1d.tar.gz
[project @ 2005-05-23 09:50:26 by simonpj]
Clarify code for splitLongestPrefix; no effect on behaviour
-rw-r--r--ghc/compiler/utils/Util.lhs11
1 files changed, 6 insertions, 5 deletions
diff --git a/ghc/compiler/utils/Util.lhs b/ghc/compiler/utils/Util.lhs
index 59bc87eede..b16f6eb969 100644
--- a/ghc/compiler/utils/Util.lhs
+++ b/ghc/compiler/utils/Util.lhs
@@ -913,11 +913,12 @@ joinFileName dir fname = dir ++ '/':fname
-- string is returned in the first component (and the second one is just
-- empty).
splitLongestPrefix :: String -> (Char -> Bool) -> (String,String)
-splitLongestPrefix s pred
- = case pre of
- [] -> (reverse suf, [])
- (_:pre) -> (reverse pre, reverse suf)
- where (suf,pre) = break pred (reverse s)
+splitLongestPrefix str pred
+ | null r_pre = (str, [])
+ | otherwise = (reverse (tail r_pre), reverse r_suf)
+ -- 'tail' drops the char satisfying 'pred'
+ where
+ (r_suf, r_pre) = break pred (reverse str)
replaceFilenameSuffix :: FilePath -> Suffix -> FilePath
replaceFilenameSuffix file suf = basenameOf file `joinFileExt` suf