It looks like length . show is faster
Prelude Control.Arrow> let numDigits n = length $ show n
Prelude Control.Arrow> let digits = iterate (`div` 10) >>> takeWhile (>0) >>> length
Prelude Control.Arrow> let n=2^1000000
Prelude Control.Arrow> :set +s
Prelude Control.Arrow> numDigits n
301030
(0.39 secs, 23001616 bytes)
Prelude Control.Arrow> digits n
301030
(51.06 secs, 19635437248 bytes)
2009/8/22 Bulat Ziganshin
<bulat.ziganshin@gmail.com>
Hello Roberto,
Saturday, August 22, 2009, 9:19:26 PM, you wrote:
> I want to calculate the number of digits of a positive integer. I was
fastest way
digits = iterate (`div` 10) >>> takeWhile (>0) >>> length
--
Best regards,
Bulat mailto:Bulat.Ziganshin@gmail.com