[Haskell-cafe] Re: Ultra-newbie Question

Maciej Piechotka uzytkownik2 at gmail.com
Sat Sep 18 14:15:30 EDT 2010


On Sat, 2010-09-18 at 03:51 -0400, Christopher Tauss wrote:
> Hello Haskell Community -
>  
> I am a professional programmer with 11 years experience, yet I just do
> not seem to be able to get the hang of even simple things in Haskell.
> I am trying to write a function that takes a list and returns the last
> n elements.
>  
> There may be a function which I can just call that does that, but I am
> trying to roll my own just to understand the concept.
>  
> Let's call the function n_lastn and, given a list  [1,2,3,4,5], I
> would like 
> n_lastn 3 = [3,4,5]
>  
> Seems like it would be something like:
>  
> n_lastn:: [a]->Int->[a]
> n_lastn 1 (xs) = last(xs)
> n_lastn n (x:xs) = ????
>  
> The issue is I do not see how you can store the last elements of the
> list.
>  
> Thanks in advance.
>  
> ctauss

I'll add my $0.03 - unless you are doing it to learn about lists rethink
your approach. Taking k elements from end of n-element list will be O(n)
operation.

For example with appropriate structures (like finger trees) it would
look like O(k) operation.

Regards
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20100918/5a2d1077/attachment.bin


More information about the Haskell-Cafe mailing list