[Haskell-cafe] fclabels > 0.5

Sergey Mironov ierton at gmail.com
Mon Aug 20 14:35:23 CEST 2012


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.



More information about the Haskell-Cafe mailing list