Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 040b01fd062be0d3984f68287bae0bc8 > files > 150

ghc-Cabal-devel-1.8.0.6-8.6.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Distribution.Simple.Command</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_Distribution-Simple-Command.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>Cabal-1.8.0.6: A framework for packaging Haskell software</TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Distribution.Simple.Command</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>portable</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>cabal-devel@haskell.org</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>Command interface
</A
></DT
><DD
><DL
><DT
><A HREF="#2"
>Constructing commands
</A
></DT
><DT
><A HREF="#3"
>Associating actions with commands
</A
></DT
><DT
><A HREF="#4"
>Running commands
</A
></DT
></DL
></DD
><DT
><A HREF="#5"
>Option Fields
</A
></DT
><DD
><DL
><DT
><A HREF="#6"
>Constructing Option Fields
</A
></DT
><DT
><A HREF="#7"
>Liftings &amp; Projections
</A
></DT
></DL
></DD
><DT
><A HREF="#8"
>Option Descriptions
</A
></DT
><DD
><DL
><DT
><A HREF="#9"
>OptDescr smart constructors
</A
></DT
></DL
></DD
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
>This is to do with command line handling. The Cabal command line is
 organised into a number of named sub-commands (much like darcs). The
 <TT
><A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
></TT
> abstraction represents one of these sub-commands, with a name,
 description, a set of flags. Commands can be associated with actions and
 run. It handles some common stuff automatically, like the <TT
>--help</TT
> and
 command line completion flags. It is designed to allow other tools make
 derived commands. This feature is used heavily in <TT
>cabal-install</TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ACommandUI"
>CommandUI</A
> flags = <A HREF="#v%3ACommandUI"
>CommandUI</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AcommandName"
>commandName</A
> :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AcommandSynopsis"
>commandSynopsis</A
> :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AcommandUsage"
>commandUsage</A
> :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AcommandDescription"
>commandDescription</A
> :: <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)</TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AcommandDefaultFlags"
>commandDefaultFlags</A
> :: flags</TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AcommandOptions"
>commandOptions</A
> :: <A HREF="Distribution-Simple-Command.html#t%3AShowOrParseArgs"
>ShowOrParseArgs</A
> -&gt; [<A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> flags]</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcommandShowOptions"
>commandShowOptions</A
> ::  <A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
> flags -&gt; flags -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AShowOrParseArgs"
>ShowOrParseArgs</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AShowArgs"
>ShowArgs</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AParseArgs"
>ParseArgs</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmakeCommand"
>makeCommand</A
> ::  <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>) -&gt; flags -&gt; (<A HREF="Distribution-Simple-Command.html#t%3AShowOrParseArgs"
>ShowOrParseArgs</A
> -&gt; [<A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> flags]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
> flags</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ACommand"
>Command</A
> action</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcommandAddAction"
>commandAddAction</A
> ::  <A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
> flags -&gt; (flags -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>] -&gt; action) -&gt; <A HREF="Distribution-Simple-Command.html#t%3ACommand"
>Command</A
> action</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnoExtraFlags"
>noExtraFlags</A
> :: [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>] -&gt; <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ACommandParse"
>CommandParse</A
> flags </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ACommandHelp"
>CommandHelp</A
> (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ACommandList"
>CommandList</A
> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ACommandErrors"
>CommandErrors</A
> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ACommandReadyToGo"
>CommandReadyToGo</A
> flags</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcommandsRun"
>commandsRun</A
> ::  <A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
> a -&gt; [<A HREF="Distribution-Simple-Command.html#t%3ACommand"
>Command</A
> action] -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>] -&gt; <A HREF="Distribution-Simple-Command.html#t%3ACommandParse"
>CommandParse</A
> (a, <A HREF="Distribution-Simple-Command.html#t%3ACommandParse"
>CommandParse</A
> action)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AOptionField"
>OptionField</A
> a = <A HREF="#v%3AOptionField"
>OptionField</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AoptionName"
>optionName</A
> :: <A HREF="Distribution-Simple-Command.html#t%3AName"
>Name</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AoptionDescr"
>optionDescr</A
> :: [<A HREF="Distribution-Simple-Command.html#t%3AOptDescr"
>OptDescr</A
> a]</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AName"
>Name</A
> = <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aoption"
>option</A
> ::  <A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ALFlags"
>LFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> -&gt; get -&gt; set -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> get set a -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmultiOption"
>multiOption</A
> ::  <A HREF="Distribution-Simple-Command.html#t%3AName"
>Name</A
> -&gt; get -&gt; set -&gt; [get -&gt; set -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptDescr"
>OptDescr</A
> a] -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AliftOption"
>liftOption</A
> ::  (b -&gt; a) -&gt; (a -&gt; b -&gt; b) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> a -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AviewAsFieldDescr"
>viewAsFieldDescr</A
> ::  <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> a -&gt; <A HREF="Distribution-ParseUtils.html#t%3AFieldDescr"
>FieldDescr</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AOptDescr"
>OptDescr</A
> a </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AReqArg"
>ReqArg</A
> <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> (<A HREF="Distribution-ReadE.html#t%3AReadE"
>ReadE</A
> (a -&gt; a)) (a -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>])</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AOptArg"
>OptArg</A
> <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> (<A HREF="Distribution-ReadE.html#t%3AReadE"
>ReadE</A
> (a -&gt; a)) (a -&gt; a) (a -&gt; [<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>])</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AChoiceOpt"
>ChoiceOpt</A
> [(<A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
>, <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
>, a -&gt; a, a -&gt; <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>)]</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ABoolOpt"
>BoolOpt</A
> <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
> -&gt; a -&gt; a) (a -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>)</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ADescription"
>Description</A
> = <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ASFlags"
>SFlags</A
> = [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AChar"
>Char</A
>]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ALFlags"
>LFlags</A
> = [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AOptFlags"
>OptFlags</A
> = (<A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
>, <A HREF="Distribution-Simple-Command.html#t%3ALFlags"
>LFlags</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> = <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AMkOptDescr"
>MkOptDescr</A
> get set a = <A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ALFlags"
>LFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> -&gt; get -&gt; set -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptDescr"
>OptDescr</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AreqArg"
>reqArg</A
> :: <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b =&gt; <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> -&gt; <A HREF="Distribution-ReadE.html#t%3AReadE"
>ReadE</A
> b -&gt; (b -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AreqArg%27"
>reqArg'</A
> :: <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b =&gt; <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> -&gt; (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; b) -&gt; (b -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AoptArg"
>optArg</A
> :: <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b =&gt; <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> -&gt; <A HREF="Distribution-ReadE.html#t%3AReadE"
>ReadE</A
> b -&gt; b -&gt; (b -&gt; [<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AoptArg%27"
>optArg'</A
> :: <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b =&gt; <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> -&gt; (<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; b) -&gt; (b -&gt; [<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnoArg"
>noArg</A
> :: (<A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> b, <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b) =&gt; b -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AboolOpt"
>boolOpt</A
> ::  (b -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
> -&gt; b) -&gt; <A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AboolOpt%27"
>boolOpt'</A
> ::  (b -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
> -&gt; b) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AchoiceOpt"
>choiceOpt</A
> :: <A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> b =&gt; [(b, <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
>, <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
>)] -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AchoiceOptFromEnum"
>choiceOptFromEnum</A
> :: (<A HREF="../base-4.2.0.2/Prelude.html#t%3ABounded"
>Bounded</A
> b, <A HREF="../base-4.2.0.2/Prelude.html#t%3AEnum"
>Enum</A
> b, <A HREF="../base-4.2.0.2/Text-Show.html#t%3AShow"
>Show</A
> b, <A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> b) =&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>Command interface
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:CommandUI"
><A NAME="t%3ACommandUI"
></A
></A
><B
>CommandUI</B
> flags </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:CommandUI"
><A NAME="v%3ACommandUI"
></A
></A
><B
>CommandUI</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:commandName"
><A NAME="v%3AcommandName"
></A
></A
><B
>commandName</B
> :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>The name of the command as it would be entered on the command line.
 For example <TT
>&quot;build&quot;</TT
>.
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:commandSynopsis"
><A NAME="v%3AcommandSynopsis"
></A
></A
><B
>commandSynopsis</B
> :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>A short, one line description of the command to use in help texts.
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:commandUsage"
><A NAME="v%3AcommandUsage"
></A
></A
><B
>commandUsage</B
> :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>The useage line summary for this command
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:commandDescription"
><A NAME="v%3AcommandDescription"
></A
></A
><B
>commandDescription</B
> :: <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)</TD
><TD CLASS="rdoc"
>Additional explanation of the command to use in help texts.
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:commandDefaultFlags"
><A NAME="v%3AcommandDefaultFlags"
></A
></A
><B
>commandDefaultFlags</B
> :: flags</TD
><TD CLASS="rdoc"
>Initial / empty flags
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:commandOptions"
><A NAME="v%3AcommandOptions"
></A
></A
><B
>commandOptions</B
> :: <A HREF="Distribution-Simple-Command.html#t%3AShowOrParseArgs"
>ShowOrParseArgs</A
> -&gt; [<A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> flags]</TD
><TD CLASS="rdoc"
>All the Option fields for this command
</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:commandShowOptions"
><A NAME="v%3AcommandShowOptions"
></A
></A
><B
>commandShowOptions</B
> ::  <A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
> flags -&gt; flags -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]</TD
></TR
><TR
><TD CLASS="doc"
>Show flags in the standard long option command line format
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="2"
><A NAME="2"
>Constructing commands
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:ShowOrParseArgs"
><A NAME="t%3AShowOrParseArgs"
></A
></A
><B
>ShowOrParseArgs</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:ShowArgs"
><A NAME="v%3AShowArgs"
></A
></A
><B
>ShowArgs</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:ParseArgs"
><A NAME="v%3AParseArgs"
></A
></A
><B
>ParseArgs</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:makeCommand"
><A NAME="v%3AmakeCommand"
></A
></A
><B
>makeCommand</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>name
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>short description
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)</TD
><TD CLASS="rdoc"
>long description
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; flags</TD
><TD CLASS="rdoc"
>initial/empty flags
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Distribution-Simple-Command.html#t%3AShowOrParseArgs"
>ShowOrParseArgs</A
> -&gt; [<A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> flags]</TD
><TD CLASS="rdoc"
>options
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
> flags</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Make a Command from standard GetOpt options.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="3"
><A NAME="3"
>Associating actions with commands
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Command"
><A NAME="t%3ACommand"
></A
></A
><B
>Command</B
> action </TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:commandAddAction"
><A NAME="v%3AcommandAddAction"
></A
></A
><B
>commandAddAction</B
> ::  <A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
> flags -&gt; (flags -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>] -&gt; action) -&gt; <A HREF="Distribution-Simple-Command.html#t%3ACommand"
>Command</A
> action</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:noExtraFlags"
><A NAME="v%3AnoExtraFlags"
></A
></A
><B
>noExtraFlags</B
> :: [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>] -&gt; <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Utility function, many commands do not accept additional flags. This
 action fails with a helpful error message if the user supplies any extra.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="4"
><A NAME="4"
>Running commands
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:CommandParse"
><A NAME="t%3ACommandParse"
></A
></A
><B
>CommandParse</B
> flags </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:CommandHelp"
><A NAME="v%3ACommandHelp"
></A
></A
><B
>CommandHelp</B
> (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:CommandList"
><A NAME="v%3ACommandList"
></A
></A
><B
>CommandList</B
> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:CommandErrors"
><A NAME="v%3ACommandErrors"
></A
></A
><B
>CommandErrors</B
> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:CommandReadyToGo"
><A NAME="v%3ACommandReadyToGo"
></A
></A
><B
>CommandReadyToGo</B
> flags</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CommandParse')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:CommandParse" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base-4.2.0.2/Control-Monad.html#t%3AFunctor"
>Functor</A
> <A HREF="Distribution-Simple-Command.html#t%3ACommandParse"
>CommandParse</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:commandsRun"
><A NAME="v%3AcommandsRun"
></A
></A
><B
>commandsRun</B
> ::  <A HREF="Distribution-Simple-Command.html#t%3ACommandUI"
>CommandUI</A
> a -&gt; [<A HREF="Distribution-Simple-Command.html#t%3ACommand"
>Command</A
> action] -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>] -&gt; <A HREF="Distribution-Simple-Command.html#t%3ACommandParse"
>CommandParse</A
> (a, <A HREF="Distribution-Simple-Command.html#t%3ACommandParse"
>CommandParse</A
> action)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>Option Fields
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:OptionField"
><A NAME="t%3AOptionField"
></A
></A
><B
>OptionField</B
> a </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>We usually have a datatype for storing configuration values, where
   every field stores a configuration option, and the user sets
   the value either via command line flags or a configuration file.
   An individual OptionField models such a field, and we usually
   build a list of options associated to a configuration datatype.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:OptionField"
><A NAME="v%3AOptionField"
></A
></A
><B
>OptionField</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:optionName"
><A NAME="v%3AoptionName"
></A
></A
><B
>optionName</B
> :: <A HREF="Distribution-Simple-Command.html#t%3AName"
>Name</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:optionDescr"
><A NAME="v%3AoptionDescr"
></A
></A
><B
>optionDescr</B
> :: [<A HREF="Distribution-Simple-Command.html#t%3AOptDescr"
>OptDescr</A
> a]</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:Name"
><A NAME="t%3AName"
></A
></A
><B
>Name</B
> = <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="6"
><A NAME="6"
>Constructing Option Fields
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:option"
><A NAME="v%3Aoption"
></A
></A
><B
>option</B
> ::  <A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ALFlags"
>LFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> -&gt; get -&gt; set -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> get set a -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Create an option taking a single OptDescr.
   No explicit Name is given for the Option, the name is the first LFlag given.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:multiOption"
><A NAME="v%3AmultiOption"
></A
></A
><B
>multiOption</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="Distribution-Simple-Command.html#t%3AName"
>Name</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>-&gt; get</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>-&gt; set</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>-&gt; [get -&gt; set -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptDescr"
>OptDescr</A
> a]</TD
><TD CLASS="rdoc"
>MkOptDescr constructors partially applied to flags and description.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Create an option taking several OptDescrs.
   You will have to give the flags and description individually to the OptDescr constructor.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="7"
><A NAME="7"
>Liftings &amp; Projections
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:liftOption"
><A NAME="v%3AliftOption"
></A
></A
><B
>liftOption</B
> ::  (b -&gt; a) -&gt; (a -&gt; b -&gt; b) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> a -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> b</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:viewAsFieldDescr"
><A NAME="v%3AviewAsFieldDescr"
></A
></A
><B
>viewAsFieldDescr</B
> ::  <A HREF="Distribution-Simple-Command.html#t%3AOptionField"
>OptionField</A
> a -&gt; <A HREF="Distribution-ParseUtils.html#t%3AFieldDescr"
>FieldDescr</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>to view as a FieldDescr, we sort the list of interfaces (Req &gt; Bool &gt; Choice &gt; Opt) and consider only the first one.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="8"
><A NAME="8"
>Option Descriptions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:OptDescr"
><A NAME="t%3AOptDescr"
></A
></A
><B
>OptDescr</B
> a </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>An OptionField takes one or more OptDescrs, describing the command line interface for the field.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:ReqArg"
><A NAME="v%3AReqArg"
></A
></A
><B
>ReqArg</B
> <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> (<A HREF="Distribution-ReadE.html#t%3AReadE"
>ReadE</A
> (a -&gt; a)) (a -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>])</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:OptArg"
><A NAME="v%3AOptArg"
></A
></A
><B
>OptArg</B
> <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> (<A HREF="Distribution-ReadE.html#t%3AReadE"
>ReadE</A
> (a -&gt; a)) (a -&gt; a) (a -&gt; [<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>])</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:ChoiceOpt"
><A NAME="v%3AChoiceOpt"
></A
></A
><B
>ChoiceOpt</B
> [(<A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
>, <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
>, a -&gt; a, a -&gt; <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>)]</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:BoolOpt"
><A NAME="v%3ABoolOpt"
></A
></A
><B
>BoolOpt</B
> <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
> -&gt; a -&gt; a) (a -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>)</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:Description"
><A NAME="t%3ADescription"
></A
></A
><B
>Description</B
> = <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:SFlags"
><A NAME="t%3ASFlags"
></A
></A
><B
>SFlags</B
> = [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AChar"
>Char</A
>]</TD
></TR
><TR
><TD CLASS="doc"
>Short command line option strings
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:LFlags"
><A NAME="t%3ALFlags"
></A
></A
><B
>LFlags</B
> = [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]</TD
></TR
><TR
><TD CLASS="doc"
>Long command line option strings
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:OptFlags"
><A NAME="t%3AOptFlags"
></A
></A
><B
>OptFlags</B
> = (<A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
>, <A HREF="Distribution-Simple-Command.html#t%3ALFlags"
>LFlags</A
>)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:ArgPlaceHolder"
><A NAME="t%3AArgPlaceHolder"
></A
></A
><B
>ArgPlaceHolder</B
> = <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="9"
><A NAME="9"
>OptDescr smart constructors
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:MkOptDescr"
><A NAME="t%3AMkOptDescr"
></A
></A
><B
>MkOptDescr</B
> get set a = <A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ALFlags"
>LFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
> -&gt; get -&gt; set -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptDescr"
>OptDescr</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:reqArg"
><A NAME="v%3AreqArg"
></A
></A
><B
>reqArg</B
> :: <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b =&gt; <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> -&gt; <A HREF="Distribution-ReadE.html#t%3AReadE"
>ReadE</A
> b -&gt; (b -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="doc"
>Create a string-valued command line interface.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:reqArg'"
><A NAME="v%3AreqArg%27"
></A
></A
><B
>reqArg'</B
> :: <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b =&gt; <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> -&gt; (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; b) -&gt; (b -&gt; [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="doc"
>(String -&gt; a) variant of <A HREF="reqArg.html"
>reqArg</A
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:optArg"
><A NAME="v%3AoptArg"
></A
></A
><B
>optArg</B
> :: <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b =&gt; <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> -&gt; <A HREF="Distribution-ReadE.html#t%3AReadE"
>ReadE</A
> b -&gt; b -&gt; (b -&gt; [<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="doc"
>Create a string-valued command line interface with a default value.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:optArg'"
><A NAME="v%3AoptArg%27"
></A
></A
><B
>optArg'</B
> :: <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b =&gt; <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder"
>ArgPlaceHolder</A
> -&gt; (<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; b) -&gt; (b -&gt; [<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>]) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="doc"
>(String -&gt; a) variant of <A HREF="optArg.html"
>optArg</A
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:noArg"
><A NAME="v%3AnoArg"
></A
></A
><B
>noArg</B
> :: (<A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> b, <A HREF="../base-4.2.0.2/Data-Monoid.html#t%3AMonoid"
>Monoid</A
> b) =&gt; b -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:boolOpt"
><A NAME="v%3AboolOpt"
></A
></A
><B
>boolOpt</B
> ::  (b -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
> -&gt; b) -&gt; <A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3ASFlags"
>SFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:boolOpt'"
><A NAME="v%3AboolOpt%27"
></A
></A
><B
>boolOpt'</B
> ::  (b -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
> -&gt; b) -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
> -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:choiceOpt"
><A NAME="v%3AchoiceOpt"
></A
></A
><B
>choiceOpt</B
> :: <A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> b =&gt; [(b, <A HREF="Distribution-Simple-Command.html#t%3AOptFlags"
>OptFlags</A
>, <A HREF="Distribution-Simple-Command.html#t%3ADescription"
>Description</A
>)] -&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="doc"
>create a Choice option
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:choiceOptFromEnum"
><A NAME="v%3AchoiceOptFromEnum"
></A
></A
><B
>choiceOptFromEnum</B
> :: (<A HREF="../base-4.2.0.2/Prelude.html#t%3ABounded"
>Bounded</A
> b, <A HREF="../base-4.2.0.2/Prelude.html#t%3AEnum"
>Enum</A
> b, <A HREF="../base-4.2.0.2/Text-Show.html#t%3AShow"
>Show</A
> b, <A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> b) =&gt; <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr"
>MkOptDescr</A
> (a -&gt; b) (b -&gt; a -&gt; a) a</TD
></TR
><TR
><TD CLASS="doc"
>create a Choice option out of an enumeration type.
   As long flags, the Show output is used. As short flags, the first character
   which does not conflict with a previous one is used.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>