tm = sum . takeWhile(>0) . iterate f . f
where f = flip div 5
Quite nice. I like
tm5 0 = 0
tm5 n = let q = div n 5 in q + tm5 q
This version corresponds to what I'm think when parsing |tm|, so I wrote
it down directly.
Also possible
tm6 = sum . unfoldr ( \ n -> case div n 5 of
0 -> mzero
q -> return (q,q)
)
I tend to not use |iterate|, when it is known in advance, which prefix
of the so constructed infinite list is used.
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe