[Haskell-cafe] efficient chop
Kazu Yamamoto ( 山本和彦 )
kazu at iij.ad.jp
Wed Sep 14 05:03:05 CEST 2011
Hello Cafe,
I would like to have an efficient implementation of the chop function.
As you guess, the chop function drops spaces in the tail of a list.
chop " foo bar baz "
-> " foo bar baz"
A naive implementation is as follows:
chopReverse :: String -> String
chopReverse = reverse . dropWhile isSpace . reverse
But this is not elegant. foldr version is as follows:
chopFoldr :: String -> String
chopFoldr = foldr f []
where
f c []
| isSpace c = []
| otherwise = c:[]
f c cs = c:cs
But this code is slower than chopReverse in some cases.
Are there any more efficient implementations of chop? Any suggestions?
--Kazu
More information about the Haskell-Cafe
mailing list