darcs-2.10.1: a distributed, interactive, smart revision control system

Safe HaskellNone




type DarcsOption = OptSpec DarcsOptDescr Flag Source

DarcsOption instantiates the first two type parameters of OptSpec to what we need in darcs. The first parameter is instantiated to The flag type is instantiate to Flag.

type PrimDarcsOption v = forall a. PrimOptSpec DarcsOptDescr Flag a v Source

This is PrimOptSpec instantiated with 'DarcsOptDescr and Flag.

type DarcsOptDescr = Compose OptDescr ((->) AbsolutePath) Source

We do not instantiate the d in OptSpec d f directly with OptDescr. Instead we (post-) compose it with (->) AbsolutePath. Modulo newtype noise, this is the same as

 type 'DarcsOptDescr f = OptDescr (AbsolutePath -> f)

This is so we can pass a directory relative to which an option argument is interpreted (if it has the form of a relative path).

optDescr :: AbsolutePath -> DarcsOptDescr f -> OptDescr f Source

The instance Functor OptDescr was introduced only in base-, which is why we implement it here manually.