[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