[Haskell-cafe] Reversing a string of words: C# v Perl V Ruby v
Brandon S. Allbery KF8NH
allbery at ece.cmu.edu
Mon Dec 11 19:13:53 EST 2006
On Dec 11, 2006, at 18:48 , Steve Downey wrote:
> the typical good solution to this problem in c or c++ is to use a
> string reverse function on the entire buffer, then re-reverse each
> word. this leaves multiple spaces correctly embedded in the larger
> that approach, of course, won't work in haskell, since it relies on
> updates. but if the challenge includes transforming "one two three
> four " into " four three two one", how could this be done?
Off the top of my head, the C++ one translates to:
*Main> concatMap reverse . groupBy (\l r -> (l == ' ') == (r == '
')) . reverse $ "one two three four "
" four three two one"
There are almost certainly more idiomatic ways to do it, but I'm
brandon s. allbery [linux,solaris,freebsd,perl] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university KF8NH
More information about the Haskell-Cafe