Piso-0.1: Partial isomorphisms  Safe HaskellSafe-Inferred
mkPisoList :: (Generic a, MkPisoList (Rep a)) => PisoList (Rep
a) aSource  Derive a list of partial isomorphisms, one for each
constructor in the Generic datatype a. The list is wrapped in
the unary constructor PisoList. Within that constructor, the
isomorphisms are separated by the right-associative binary infix
constructor :&. Finally, the individual isomorphisms are wrapped
in the unary constructor I. These constructors are all exported
by this module, but no documentation is generated for them by
Hackage.  As an example, here is how to define the isomorphisms
nil and cons for [a], which is an instance of Generic:   nil  ::
Piso              t  ([a] :- t)  cons :: Piso (a :- [a] :- t)
([a] :- t)  (nil, cons) = (nil', cons')      PisoList (I nil' :&
I cons') = mkPisoList  GHC 7.6.3 requires the extra indirection
through nil' and cons', due to bug 7268
(http://ghc.haskell.org/trac/ghc/ticket/7268). When it is fixed,
the example above can be writte