Precedence: 7
`kyo` - [K]leisli [Y]oneda c[O]variant
How to read: modify argument covariantly with a reverse Kleisli arrow.
It looks similar to yo except the fact that we map a reverse Kleisli morphism - that’s why we have a small hook here on the left.
Simplified type annotation:
`kyo` : t a `AR_` into (from (tt a) o) (t o)
Compare it with yo and yok operators:
(`yo`): t a `AR_` into (from a o) (t o)
(`yok`): t a `AR_` into (from a (tt o)) (t o)
This operator is useful to expand variations of datastructures:
[1,2,3,4,5] `yi` is @(Nonempty List Integer)
`kyo` Range @(Nonempty List Integer)
===> [[1,2,3,4,5], [2,3,4,5], [3,4,5], [4,5], [5]]
We also can expand one type of datastructures vin another one:
[1,2,3,4,5] `yi` is @(Nonempty List Integer)
`kyo` Range @(Scrolling List Integer)
===> [[<1>,2,3,4,5], [1,<2>,3,4,5], [1,2,<3>,4,5], [1,2,3,<4>,5], [1,2,3,4,<5>]]
Behaviour is similar to comonadic extend method in vanilla Haskell.