consumeWhile :: (Char -> Bool) -> State String String
consumeWhile f = do
  str <- get
  let (x,r) = span f str
  put $ r
  return x
consumeWhile :: (Char -> Bool) -> State String String
consumeWhile f = do
  str <- get
  let (x,r) = span f str
  put $ r
  return x
consumeWhile f = do
  str <- get
  let (x,r) = span f str
  put $ r
  return x