Backed out DistribM. Now that I've read "Composing Monads", I know there's more to it. At least four different ways, all with conflicting Monad instances.
Version 0.4
pairEdit, pairEditM in Data.Pair
build-type simple
doc tweek DistribM & joinMM
DistribM export & comment tweak
DistribM and (m :. n) Monad
Functor/Functor & Applicative/Applicative tweak
inId2. Functor & Applicative instances for Id
removed r->m dep in RefMonad
doc tweak
Version 0.3
Simplified Applicative instance for (g :. f)
Renamed type constructors "O" and "App" to "(:.)" and "(:$)". Also include old names for compatibility.
Replaced the 6.6-compatible {{{OPTIONS}}} pragmas with LANGUAGE
Pair & Copair for Const
Changed functional dependency for RefMonad
Version 0.2
More comments
Added Data.Partial: partial values.
Data.Bijection: bijective arrows. Used in Control.Compose for composing representation transformations.
Using LANGUAGE instead of OPTIONS pragmas
Data.Pair & Data.Fun. Classes of pair-like and function-like types.
Data.RefMonad
Renamed StaticArrow/Static to OO/OO
Now in{O,Flip,Prod,Arrw,Const}{,2,3} (i.e., inO2 etc)
Sink type alias and Monoid instance.
Monoid_f and O instance.
Arrw type class with Functor & Cofunctor instances.
Data.Title: a titling class for type constructors. Doesn't really belong here.
Eliminated dependency on "mtl" package by removing a standard applicative instance for ReaderT.
Data.CxMonoid: context-dependent monoid
Type constructors :*:, ::*::, & :~>:
FunA and FunAble, for convenient Arrow definitions. See also FunD & FunDble in DeepArrow.
Version 0.1
Renamed "Compose"/"Comp<hask>"/"<hask>unComp" to "O"/"O"/"unO".
Renamed "onComp" to "inO"
Renamed "mapSrc" to "mapCur", and renamed type parameter "src" to "cur", to avoid confusion with Source in Phooey's use of DataDriven.
Swapped argument order to dd in DataDriven.
Renamed "Updater" to "Action"
Changed the Monoid (IO a) instance in Control.Instances to use liftA2 mappend instead of (*>).