
12 Apr
2005
12 Apr
'05
12:53 p.m.
On Tue, 12 Apr 2005, Hamilton Richards wrote:
Here's a solution:
init :: [a] -> [a] init xs = tail (foldr keep [] xs) where keep :: a -> [a] -> [a] keep x [] = [x] keep x [y] = [x,x] keep x (y:z:zs) = x:x:y:zs
Nice idea! One case can be eliminated.
init :: [a] -> [a] init xs = tail (foldr keep [] xs) where keep :: a -> [a] -> [a] keep x [] = [x] keep x (_:zs) = x:x:zs