[Haskell-cafe] fclabels > 0.5

Erik Hesselink hesselink at gmail.com
Mon Aug 20 15:02:27 CEST 2012


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 <ierton at 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list