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