[Haskell-beginners] Re: Iterating through a list of char...
matthew coolbeth
mac01021 at engr.uconn.edu
Thu Apr 29 10:48:15 EDT 2010
I understand that higher-order functions are incredibly powerful, and that
you can do essentially anything you might ever want while using only 'map'
and 'foldl'.
However, I have trouble believing that even experienced programmers wold
find such HOF-oriented code to be more readable than Mr Akgun's solution:
foo :: (a -> a -> a) -> [a] -> [a]
foo f (x:y:rest) = f x y : foo f (y:rest)
foo f _ = []
It seems to me that 'foo', as defined here, is a direct restatement of the
original program specification (the english one). Basically no translation
required.
If anyone here is enough of a veteran to prefer a map/fold implementation of
this spec, I would be interested to hear about the thought processes you
undertake when writing such code.
Thanks.
On Thu, Apr 29, 2010 at 10:22, David Virebayre
<dav.vire+haskell at gmail.com<dav.vire%2Bhaskell at gmail.com>
> wrote:
> On Thu, Apr 29, 2010 at 3:52 PM, jean verdier <verdier.jean at gmail.com>
> wrote:
> > I may have missed it in this thread, but if not, why didn't anyone
> > suggest:
> >
> > trans [] = []
> > trans [x] = [x]
> > trans ('a':_:xs) = 'a' : 'A' : trans xs
> > trans (x:xs) = x : trans xs
>
> While as a beginner (I still am !) I would come up with a solution
> like this one, on the long run it helps trying to solve those problem
> with maps, folds, filters, and zips: Eventually, you'll find the code
> more readable, easier to write, and there's perhaps a better chance
> that it can be optimised by ghc.
>
> David.
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
--
mac
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20100429/8f307c8c/attachment-0001.html
More information about the Beginners
mailing list