[Haskell-cafe] Re: defining last using foldr

Aaron Denney wnoise at ofb.net
Tue Aug 14 16:05:19 EDT 2007

On 2007-08-14, Alexteslin <alexteslin at yahoo.co.uk> wrote:
> Hi,
> I am trying to do the exercise which asks to define built-in functions
> 'last' and 'init' using 'foldr' function, such as last "Greggery Peccary" =
> 'y'
> the type for my function is: 
> myLast :: [Char] -> Char 
> I am not generalizing type so that make it less complicated.  But what ever
> i am trying would not work.  The only function type foldr takes as an
> argument is either (a->a->a) or (a->b->b) and none of the functions i found
> that would match this type from Char to Char.  So in other words should be
> (Char->Char-Char).  I can define the function without foldr but that misses
> the point of the exercise.  

Folds replace the "cons" operator (:) with the function you pass it.
If you want the tail of the list, you want what is on the right hand
side of every cons (unless that's []).

Aaron Denney

More information about the Haskell-Cafe mailing list