<!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 & 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 > -> <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 > -> <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 > -> [<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 -> flags -> [<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 > -> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</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 > -> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >) -> flags -> (<A HREF="Distribution-Simple-Command.html#t%3AShowOrParseArgs" >ShowOrParseArgs</A > -> [<A HREF="Distribution-Simple-Command.html#t%3AOptionField" >OptionField</A > flags]) -> <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 -> (flags -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> action) -> <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 >] -> <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 > -> <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 -> [<A HREF="Distribution-Simple-Command.html#t%3ACommand" >Command</A > action] -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <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 > -> <A HREF="Distribution-Simple-Command.html#t%3ALFlags" >LFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3ADescription" >Description</A > -> get -> set -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > get set a -> <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 > -> get -> set -> [get -> set -> <A HREF="Distribution-Simple-Command.html#t%3AOptDescr" >OptDescr</A > a] -> <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 -> a) -> (a -> b -> b) -> <A HREF="Distribution-Simple-Command.html#t%3AOptionField" >OptionField</A > a -> <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 -> <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 -> a)) (a -> [<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 -> a)) (a -> a) (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 >])</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 -> a, a -> <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 > -> a -> a) (a -> <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 > -> <A HREF="Distribution-Simple-Command.html#t%3ALFlags" >LFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3ADescription" >Description</A > -> get -> set -> <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 => <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder" >ArgPlaceHolder</A > -> <A HREF="Distribution-ReadE.html#t%3AReadE" >ReadE</A > b -> (b -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]) -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 => <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder" >ArgPlaceHolder</A > -> (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> b) -> (b -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]) -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 => <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder" >ArgPlaceHolder</A > -> <A HREF="Distribution-ReadE.html#t%3AReadE" >ReadE</A > b -> b -> (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 >]) -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 => <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder" >ArgPlaceHolder</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 > -> b) -> (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 >]) -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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) => b -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> a) a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AboolOpt" >boolOpt</A > :: (b -> <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 >) -> (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> b) -> <A HREF="Distribution-Simple-Command.html#t%3ASFlags" >SFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3ASFlags" >SFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> a) a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AboolOpt%27" >boolOpt'</A > :: (b -> <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 >) -> (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> b) -> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags" >OptFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags" >OptFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 => [(b, <A HREF="Distribution-Simple-Command.html#t%3AOptFlags" >OptFlags</A >, <A HREF="Distribution-Simple-Command.html#t%3ADescription" >Description</A >)] -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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) => <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 >"build"</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 > -> <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 > -> <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 > -> [<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 -> flags -> [<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" >-> <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" >-> <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 > -> <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" >-> flags</TD ><TD CLASS="rdoc" >initial/empty flags </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Distribution-Simple-Command.html#t%3AShowOrParseArgs" >ShowOrParseArgs</A > -> [<A HREF="Distribution-Simple-Command.html#t%3AOptionField" >OptionField</A > flags]</TD ><TD CLASS="rdoc" >options </TD ></TR ><TR ><TD CLASS="arg" >-> <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 -> (flags -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> action) -> <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 >] -> <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 > -> <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 -> [<A HREF="Distribution-Simple-Command.html#t%3ACommand" >Command</A > action] -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >] -> <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 > -> <A HREF="Distribution-Simple-Command.html#t%3ALFlags" >LFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3ADescription" >Description</A > -> get -> set -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > get set a -> <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" >-> get</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> set</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> [get -> set -> <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" >-> <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 & 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 -> a) -> (a -> b -> b) -> <A HREF="Distribution-Simple-Command.html#t%3AOptionField" >OptionField</A > a -> <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 -> <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 > Bool > Choice > 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 -> a)) (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: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 -> a)) (a -> a) (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 >])</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 -> a, a -> <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 > -> a -> a) (a -> <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 > -> <A HREF="Distribution-Simple-Command.html#t%3ALFlags" >LFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3ADescription" >Description</A > -> get -> set -> <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 => <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder" >ArgPlaceHolder</A > -> <A HREF="Distribution-ReadE.html#t%3AReadE" >ReadE</A > b -> (b -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]) -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 => <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder" >ArgPlaceHolder</A > -> (<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> b) -> (b -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]) -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> a) a</TD ></TR ><TR ><TD CLASS="doc" >(String -> 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 => <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder" >ArgPlaceHolder</A > -> <A HREF="Distribution-ReadE.html#t%3AReadE" >ReadE</A > b -> b -> (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 >]) -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 => <A HREF="Distribution-Simple-Command.html#t%3AArgPlaceHolder" >ArgPlaceHolder</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 > -> b) -> (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 >]) -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> a) a</TD ></TR ><TR ><TD CLASS="doc" >(String -> 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) => b -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 -> <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 >) -> (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> b) -> <A HREF="Distribution-Simple-Command.html#t%3ASFlags" >SFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3ASFlags" >SFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 -> <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 >) -> (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> b) -> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags" >OptFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3AOptFlags" >OptFlags</A > -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 => [(b, <A HREF="Distribution-Simple-Command.html#t%3AOptFlags" >OptFlags</A >, <A HREF="Distribution-Simple-Command.html#t%3ADescription" >Description</A >)] -> <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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) => <A HREF="Distribution-Simple-Command.html#t%3AMkOptDescr" >MkOptDescr</A > (a -> b) (b -> a -> 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 >