
20 Aug
2012
20 Aug
'12
8:35 a.m.
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.