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

Reply via email to