
At 6:53 PM +0200 2005/4/12, Henning Thielemann wrote:
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
Yes, much nicer! Thanks, --Ham -- ------------------------------------------------------------------ Hamilton Richards, PhD Department of Computer Sciences Senior Lecturer The University of Texas at Austin 512-471-9525 1 University Station C0500 Taylor Hall 5.138 Austin, Texas 78712-0233 ham@cs.utexas.edu hrichrds@swbell.net http://www.cs.utexas.edu/users/ham/richards ------------------------------------------------------------------