Arg package:base-compat

Arg isn't itself a Semigroup in its own right, but it can be placed inside Min and Max to compute an arg min or arg max.
>>> minimum [ Arg (x * x) x | x <- [-10 .. 10] ]
Arg 0 0
>>> Max (Arg 0 ()) <> Max (Arg 1 ())
Max {getMax = Arg 1 ()}
>>> Min (Arg 0 ()) <> Min (Arg 1 ())
Min {getMin = Arg 0 ()}
Computation getArgs returns a list of the program's command line arguments (not including the program name).
withArgs args act - while executing action act, have getArgs return args.