CurryInfo: residuation-analysis-3.0.0 / ToolOptions.processOptions

definition:
 
processOptions :: String -> [String] -> IO (Options,[String])
processOptions banner argv = do
  let (funopts, args, opterrors) = getOpt Permute options argv
      opts = foldl (flip id) defaultOptions funopts
  unless (null opterrors)
         (putStr (unlines opterrors) >> printUsage >> exitWith 1)
  when (optHelp opts) (printUsage >> exitWith 0)
  return (opts, map stripCurrySuffix args)
 where
  printUsage = putStrLn (banner ++ "\n" ++ usageText)
demand:
 no demanded arguments
deterministic:
 deterministic operation
documentation:
 
Process the actual command line argument and return the options
and the name of the main program.
failfree:
 (_, _)
indeterministic:
 referentially transparent operation
infix:
 no fixity defined
iotype:
 {(_,_) |-> _}
name:
 processOptions
precedence:
 no precedence defined
result-values:
 _
signature:
 String -> [String] -> Prelude.IO (Options, [String])
solution-complete:
 operation might suspend on free variables
terminating:
 possibly non-terminating
totally-defined:
 possibly non-reducible on same data term