On 30/12/2006, at 1:33 PM, Pieter Laeremans wrote:

Hi,

I'm reading the Haskell school of expression by Paul Hudok. Great book.

Hudak. And I  concur, a great book.


However I would like some feedback about a solution to an exercise

The problem is quite simple :

define f1 and f2 (using higher order functions ) such that

f1 (f2 (*) [1..4]) 5 => [5,10,15,20]

I have come up with the following solution :

f2 :: (a->b)->[a] -> [b]
f2 f xs = map f xs

That's fine, but what you are really saying is that f2 is the same as map, so you can make
that connection more obvious like this:

   f2 = map

f1 fs a = map (applyOp a) fs
applyOp  b f = f b

That's also fine. You can avoid applyOp in numerous ways. One way is to use the
function called $ from the Prelude; it implements function application.

f $ x = f x

So you could write:

   f1 fs a = map ($ a) fs

Of course, there are also other ways of implementing f1 and f2 such that you get the desired result, but the map approach seems to be what the question was angling for.

Cheers,
Bernie.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to