Cross-post from Slack:
Hello, I wanted to know how the iwander
function is implemented.
iwander
defines universal quantification of f
but wander
also defines one. If the two types are different how is it possible to call the wander
function using itr
?
class (Strong p, Choice p) <= Wander p where
wander
:: forall s t a b
. (forall f. Applicative f => (a -> f b) -> s -> f t)
-> p a b
-> p s t
iwander
:: forall i s t a b
. (forall f. Applicative f => (i -> a -> f b) -> s -> f t)
-> IndexedTraversal i s t a b
iwander itr = wander (\f s -> itr (curry f) s) <<< unwrap