Precedence: 7
`kyo` - co[K]leisli [Y]oneda c[O]variant
How to read: modify argument covariantly with a coKleisli 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` Apply @(Nonempty List)
`q__` [[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 - Nonempty List via Scrolling List:
[1,2,3,4,5] `yi` is @(Nonempty List Integer) `kyo` Range @List
`q__` [[[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.