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