[Haskell-cafe] Style
Bjorn Bringert
bringert at cs.chalmers.se
Fri Aug 24 03:45:44 EDT 2007
On Aug 24, 2007, at 9:18 , Arie Groeneveld wrote:
> Hi,
>
> I defined several functions for calculating the number
> of trailing zero's of n!
>
>
> tm = sum . takeWhile(>0) . iterate f . f
> where f = flip div 5
>
> tm1 n = sum . takeWhile(>0) . map (div n . (5^)) $ [1..]
> tm2 n = sum . takeWhile(>0) . map (div n) $ iterate ((*)5) 5
> tm3 = sum . takeWhile(>0) . flip map (iterate ((*)5) 5) . div
>
>
>
> Questions:
>
> Which one is the most elegant one generally speaking?
> Which one is most natural in Haskell?
> Is there more 'beauty' to possible?
>
>
> My personal choice is 'tm'.
> I like 'tm3' (a revised version of tm2) in terms of
> pointlessness and not having a 'where', but I think
> it's a bit contrived because of the 'flip'.
>
> Comments?
Here's a much more inefficient version, but it has the merit of being
very easy to understand:
tm_silly n = length $ takeWhile (=='0') $ reverse $ show $ product
[1..n]
/Björn
More information about the Haskell-Cafe
mailing list