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
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe