<div dir="auto">You're not being very imaginative at all. Try out, oh, `StateT s Maybe`. Or play around with a nice fake functor like the magma used to implement `traverseBia` in `bifunctors`—pretty sure that won't work out.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 3, 2021, 11:00 AM Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com">carter.schonwald@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hey everyone!</div><div><br></div><div>for context, I have some code where I was seeing how far coerce lets me go to avoid doing wrappers for certain codes,</div><div><br></div><div>i found i had to write the following (mapping an operation over to its newtyped sibling)<br></div><div><br></div><div>```</div><div>-- > :t QRA.wither</div><div>--- forall a b f . Applicative f => (a -> f (Maybe b)) -> RAList a -> f (RAList b)</div><div>---<br></div><div>wither :: forall a b f . (Applicative f, (forall c d .  Coercible c d => Coercible (f c) (f d))  ) =><br>        (a -> f (Maybe b)) -> RAList a -> f (RAList b)<br>wither = \f la ->    coerce     $ QRA.wither f $ coerce la</div><div>```</div><div><br></div><div>i'd much rather be able to write <br></div><div>```</div><div>wither :: forall a b f . (Applicative f) =><br>        (a -> f (Maybe b)) -> RAList a -> f (RAList b)<br>wither = \f la ->    coerce     $ QRA.wither f $ coerce la</div><div>```<br></div><div><br></div><div><br></div><div>this seems like it'd be best done via something like changing the functor class definition to <br></div><div><br></div><div>```<br></div><div>class  (forall c d .  Coercible c d => Coercible (f c) (f d))  ) => Functor f where ..<br></div><div>```</div><div><br></div><div>is there any specific reason why this is not feasible? I cant think of a GADT where this wouldn't be totally safe to do (because unlike in foldable, f is in both the domain and co-domain), but maybe i'm not being imaginative enough?</div><div><br></div><div>look forward to learning what our obstacles are to making this happen for ghc 9.2 :) <br></div><div><br></div><div>-Carter<br></div><div><br></div></div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>