アルファベットの繰り上がり

import Char

next :: String -> String
next [] = "A"
next ('Z':cs) = 'A' : next cs
next (c:cs) = succ c : cs

main :: IO ()
main = mapM_ (putStrLn . reverse) $ take 100 $ iterate next "A"

普通に基数変換かと思いきや、最上位桁の扱いだけ違うことに気づいたので適当に日和っておいた。