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

Safe HaskellSafe-Inferred

Darcs.UI.Options.Iso

Contents

Synopsis

Isomorphisms

data Iso a b

Lightweight type ismomorphisms (a.k.a. invertible functions). If

 Iso fw bw :: Iso a b

then fw and bw are supposed to satisfy

fw . bw = id = bw . fw

Constructors

Iso (a -> b) (b -> a) 

class IsoFunctor f where

Lift an isomorphism between a and b to one between f a and f b. Like Functor, except we can only map invertible functions (i.e. an Isomorphisms).

Methods

imap :: Iso a b -> f a -> f b

Instances

under :: Functor f => Iso a b -> Iso (f a) (f b)

Apply an iso under a functor.

cps :: Iso a b -> Iso (a -> c) (b -> c)

Apply an iso under cps (which is a cofunctor).