« Return to Thread: defining mapPairs function

Re: defining mapPairs function

by Alexteslin :: Rate this Message:

Reply to Author | View in Thread


Alexteslin wrote:
Hello,

I just came across with this question on the exam and can not think of implementing it.

mapPair :: (a -> a -> a) -> [a] -> [a]

such that mapPairs f [x1, x2, x3, x4...] = [f x1 x2, f x3 x4,...]

and if the list contains an odd number of elements, the last one is kept unchanged, for example

mapPairs f [x1, x2, x3] = [f x1 x2, x3]


Any ideas will be appreciated, thanks
Oh, I think i just defined it - seems to work.
I spent some time on the exam and made silly mistakes:

mapPairs :: (a -> a -> a) -> [a] -> [a]
mapPairs f [x] = [x]
mapPairs f [] = []
mapPairs f (x:xs) = f x (head xs) : mapPairs f (tail xs)

I was concing f x to (head xs) as well and
mapPairs f [x] = x  - this is very silly mistake.

Does anyone think this is the right answer?

 « Return to Thread: defining mapPairs function