parseArgs = do
   opts <- getProgName >>= cmdArgs . ((options &=) . program)
   return $ case opts of
      Options q fs o []      -> (q, fs,      o)
      Options _ fs o [q]     -> (q, fs,      o)
      Options _ fs o (q:fs') -> (q, fs++fs', o)
parseArgs = do
   opts <- getProgName >>= cmdArgs . ((options &=) . program)
   return $ case opts of
      Options q fs o []      -> (q, fs,      o)
      Options _ fs o [q]     -> (q, fs,      o)
      Options _ fs o (q:fs') -> (q, fs++fs', o)
parseArgs = do
   opts <- getProgName >>= cmdArgs . ((options &=) . program)
   return $ case opts of
      Options q fs o []      -> (q, fs,      o)
      Options _ fs o [q]     -> (q, fs,      o)
      Options _ fs o (q:fs') -> (q, fs++fs', o)