Untested, but this should be about right: osi (Bij f b) = iso (Bij b f)
Erik On Mon, Aug 20, 2012 at 2:35 PM, Sergey Mironov <ier...@gmail.com> wrote: > Hi. I'm porting old code, which uses fclabels <0.5. Old fclabels > define Iso typeclass as follows: > > class Iso f where > iso :: a :<->: b -> f a -> f b > iso (Lens a b) = osi (b <-> a) > osi :: a :<->: b -> f b -> f a > osi (Lens a b) = iso (b <-> a) > > Newer one defines iso: > > class Iso (~>) f where > iso :: Bijection (~>) a b -> f a ~> f b > > instance Arrow (~>) => Iso (~>) (Lens (~>) f) where > iso bi = arr ((\a -> lens (fw bi . _get a) (_set a . first (bw bi))) . > unLens) > > instance Arrow (~>) => Iso (~>) (Bijection (~>) a) where > iso = arr . (.) > > but no osi. I'm not a guru in categories, can you help me define osi? > > Thanks > Sergey. > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe