
Thanks, It's my first post.
If you not import Prelude is more clear (N. is horrible):
import Prelude ((-), Integral)
import Data.Number.Nat (drop, length, toNat)
lastN :: Integral b => b -> [a] -> [a]
lastN n xs = drop (length xs - n') xs
where n' = toNat n
P.S.: You benchmarked? I didn't...
2010/9/20, Luke Palmer
On Mon, Sep 20, 2010 at 5:11 PM, Luke Palmer
wrote: On Sun, Sep 19, 2010 at 5:01 PM, Henrique Becker
wrote: Why not?
import Data.Number.Nat as N
lastN :: Integral b => b -> [a] -> [a] lastN n xs = N.drop (N.length xs - n') xs where n' = N.toNat n
Wow. That is gorgeous! I think it's basically the same idea as my "zipWith" implementation, but it is so much clearer here. Thanks :-)
Er forget that zipWith comment. It is quite unlike that. But it is still beautiful and efficient.