[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