# Simple Question Again

**Jerry
**
jerry@gime.com

*Fri, 17 May 2002 21:10:04 +0800*

Hi, I'm sorry to bother everyone again with this simple append' stuff
-- below is my revised append' function
1) append' :: [[a]] -> a -> [[a]]
2) append' [] y = [[y]]
3) append' (x:xs) y =
4) case xs of [] -> foldr (:) [y] x
5) (z:zs) -> (init (x:xs)) ++ [(last xs)++[y]]
-- to achieve
append' [] 1 = [[1]]
append' [[1]] 2 = [[1, 2]]
append' [[1], [2]] 3 = [[1], [2, 3]]
-- and ghc gives the following compile error:
p3a.hs:4:
Cannot unify the type-signature variable `a' with the type `[a]'
Expected type: [a]
Inferred type: a
In the list element: y
In the second argument of `foldr', namely `([y])'
make: *** [p3a] Error 1
-- now this is something I _really_ don't understand:
-- x is of type [a], [y] is of type [a], and isn't foldr (:) [a] [a]
-- perfectly valid?!
Much thanx in advance
--
Regards,
Jerry