[Haskell-cafe] Thompson's Exercise 9.13

Hamilton Richards ham at cs.utexas.edu
Fri Apr 15 23:57:12 EDT 2005


At 10:50 AM +0900 2005/4/16, Kaoru Hosokawa wrote:
>My solution based on Bernie's solution:
>
>init :: [a] -> [a]
>init xs = foldr (left (length xs)) xs xs
>
>left :: Int -> a -> [a] -> [a]
>left n x xs
>      | n == length xs = []
>      | otherwise      = x : xs
>
>I use the foldr return value for the empty list as the input itself. 
>Use this value as a marker to signify that I am at the  end of the 
>list by checking its length.

Using length causes this definition of init to fail on infinite lists.

--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 at cs.utexas.edu                hrichrds at swbell.net
http://www.cs.utexas.edu/users/ham/richards
------------------------------------------------------------------


More information about the Haskell-Cafe mailing list