import Data.Char import Data.List import Control.Arrow main :: IO () main = putStrLn $ unlines $ take 11 $ iterate f "1" f :: String -> String f = group >>> concatMap ((length &&& head) >>> (intToDigit *** (: [])) >>> uncurry (:))