与えられた数字のケタ数

http://ja.doukaku.org/40/より。ふつうです。Integerを使ってIntの制限を越えられるようにしてみました。こういう場合は、Data.ListモジュールのgenericXXX関数を使います。

module Main (main) where

import Data.List (genericLength)

keta :: Integer -> (Integer, Integer)
keta n = let k = genericLength $ show n in (k, 10 ^ (k - 1))

main :: IO ()
main = mapM_ (print . keta) [2469, 600, 1]
-- => (4,1000)
--    (3,100)
--    (1,1)