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

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe