ContentsIndex
Darcs.Hopefully
Synopsis
data Hopefully a
= Hopefully (SimpleHopefully a)
| Hashed String (SimpleHopefully a)
data SimpleHopefully a
= Actually a
| Unavailable String
data PatchInfoAnd p = PIAP !PatchInfo (Hopefully (Named p))
fmapH :: (a -> b) -> Hopefully a -> Hopefully b
info :: PatchInfoAnd p -> PatchInfo
piap :: PatchInfo -> Named p -> PatchInfoAnd p
n2pia :: Named p -> PatchInfoAnd p
patchInfoAndPatch :: PatchInfo -> Hopefully (Named p) -> PatchInfoAnd p
hopefully :: PatchInfoAnd p -> Named p
conscientiously :: (Doc -> Doc) -> PatchInfoAnd p -> Named p
hopefullyM :: Monad m => PatchInfoAnd p -> m (Named p)
hopefully2either :: Hopefully a -> Either String a
actually :: a -> Hopefully a
createHashed :: String -> (String -> IO (Sealed a)) -> IO (Sealed (Hopefully a))
extractHash :: PatchInfoAnd p -> Either (Named p) String
unavailable :: String -> Hopefully a
Documentation
data Hopefully a
Hopefully p C (x y) is Either String (p C (x y)) in a form adapted to darcs patches. The C (x y) represents the type witness for the patch that should be there. The Hopefully type just tells whether we expect the patch to be hashed or not, and SimpleHopefully does the real work of emulating Either. Hopefully sh represents an expected unhashed patch, and Hashed hash sh represents an expected hashed patch with its hash.
Constructors
Hopefully (SimpleHopefully a)
Hashed String (SimpleHopefully a)
data SimpleHopefully a
SimpleHopefully is a variant of Either String adapted for type witnesses. Actually is the equivalent of Right, while Unavailable is Left.
Constructors
Actually a
Unavailable String
data PatchInfoAnd p
PatchInfoAnd p represents a hope we have to get a patch through its info. We're not sure we have the patch, but we know its info.
Constructors
PIAP !PatchInfo (Hopefully (Named p))
show/hide Instances
fmapH :: (a -> b) -> Hopefully a -> Hopefully b
info :: PatchInfoAnd p -> PatchInfo
piap :: PatchInfo -> Named p -> PatchInfoAnd p
piap i p creates a PatchInfoAnd containing p with info i.
n2pia :: Named p -> PatchInfoAnd p
n2pia creates a PatchInfoAnd represeting a Named patch.
patchInfoAndPatch :: PatchInfo -> Hopefully (Named p) -> PatchInfoAnd p
hopefully :: PatchInfoAnd p -> Named p
hopefully hp tries to get a patch from a PatchInfoAnd value. If it fails, it outputs an error "failed to read patch: <description of the patch>". We get the description of the patch from the info part of hp
conscientiously :: (Doc -> Doc) -> PatchInfoAnd p -> Named p
conscientiously er hp tries to extract a patch from a PatchInfoAnd. If it fails, it applies the error handling function er to a description of the patch info component of hp.
hopefullyM :: Monad m => PatchInfoAnd p -> m (Named p)
hopefullyM is a version of hopefully which calls fail in a monad instead of erroring.
hopefully2either :: Hopefully a -> Either String a
actually :: a -> Hopefully a
createHashed :: String -> (String -> IO (Sealed a)) -> IO (Sealed (Hopefully a))
extractHash :: PatchInfoAnd p -> Either (Named p) String
unavailable :: String -> Hopefully a
Produced by Haddock version 2.4.2