SOE exercise

Isaac Jones

(I'm not sure why my postings seem somewhat anonymous, I'll mess with
the headers in this post to see if that fixes it.  I post to other
mailman lists and haven't noticed this problem.)

I'm working through Paul Hudak's SOE, and have a question about
problem 9.4, which is to define a function applyEach.  I've come up
with several versions, but not one which usefully uses currying (the
exercise doesn't explicitly say to use currying, but that's the only
thing in this section).

My real question is whether I should be trying to apply currying here.
Solutions are welcome, but I can think of several good reasons not to
post solutions to this forum.

The behavior of applyEach should be obvious from my attempts below.


applyEach [(+1), (+3), (+2)]  1
=> [2,4,3] :: [Integer]

Recursive version:

> applyEach :: [a->b] -> a -> [b]
> applyEach [] _ = []
> applyEach (h:t) x = (h x) : (applyEach t x)

Now with higher order functions:

> applyEach' :: [a->b] -> a -> [b]
> applyEach' funs x = map applyx funs where applyx (fun) = fun x

With Lambda:

> applyEach'' :: [a->b] -> a -> [b]
> applyEach'' funs x = map (\fun-> fun x) funs

With Currying:




P.S. I'm enjoying this book a great deal :-)