readValues :: BS.ByteString -> Maybe [Value]
readValues = readValues' . dropSpaces
  where readValues' t
          | BS.null t = Just []
          | otherwise = do (a, t') <- readValue t
                           (a:) <$> readValues' t'

-- Comparisons

-- | Two values differ in some way.
readValues :: BS.ByteString -> Maybe [Value]
readValues = readValues' . dropSpaces
  where readValues' t
          | BS.null t = Just []
          | otherwise = do (a, t') <- readValue t
                           (a:) <$> readValues' t'

-- Comparisons

-- | Two values differ in some way.
readValues = readValues' . dropSpaces
  where readValues' t
          | BS.null t = Just []
          | otherwise = do (a, t') <- readValue t
                           (a:) <$> readValues' t'

-- Comparisons

-- | Two values differ in some way.