config :: Parser (Either String Config)
config = do
  mx <- defaultSection
  xs <- many section
  return $ join $ mkConfig `fmap` sequence (maybe xs (:xs) mx)

-- | A section header like [name], followed by options and comments
config :: Parser (Either String Config)
config = do
  mx <- defaultSection
  xs <- many section
  return $ join $ mkConfig `fmap` sequence (maybe xs (:xs) mx)

-- | A section header like [name], followed by options and comments
config = do
  mx <- defaultSection
  xs <- many section
  return $ join $ mkConfig `fmap` sequence (maybe xs (:xs) mx)

-- | A section header like [name], followed by options and comments