import Control.Monad.State.Lazy f = takeWhile(>"").evalState(mapM(state.splitAt.(2^))[0..]) main :: IO () main = do putStr $ show $ f "abcdefghijklmno"