<div dir="ltr">I don't think this is quite the same.<div><br></div><div>`<span style="font-size:12.8px">compdata` </span>seems to define:</div><div><br></div><div><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)">(f </span><a href="http://hackage.haskell.org/package/compdata-0.11/docs/Data-Comp-Multi-HFunctor.html#t::-45--62-" style="margin:0px;padding:0px;text-decoration-line:none;color:rgb(171,105,84);font-family:monospace;font-size:13px">:-></a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)"> g) -> h f </span><a href="http://hackage.haskell.org/package/compdata-0.11/docs/Data-Comp-Multi-HFunctor.html#t::-45--62-" style="margin:0px;padding:0px;text-decoration-line:none;color:rgb(171,105,84);font-family:monospace;font-size:13px">:-></a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)"> h g</span><br></div><div><br></div><div>But I want:</div><div><br></div><div><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)">(f </span><a href="http://hackage.haskell.org/package/compdata-0.11/docs/Data-Comp-Multi-HFunctor.html#t::-45--62-" style="margin:0px;padding:0px;text-decoration-line:none;color:rgb(171,105,84);font-family:monospace;font-size:13px">:-></a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)"> g) -> h f </span><a href="http://hackage.haskell.org/package/compdata-0.11/docs/Data-Comp-Multi-HFunctor.html#t::-45--62-" style="margin:0px;padding:0px;text-decoration-line:none;color:rgb(171,105,84);font-family:monospace;font-size:13px">-></a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)"> h g</span><br></div><div><br></div><div>Notice the lack of colon between the last two arguments. It's ordinary function application there.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 11, 2017 at 5:02 PM, Sergey Vinokurov <span dir="ltr"><<a href="mailto:serg.foo@gmail.com" target="_blank">serg.foo@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Clinton,<br>
<br>
Sorry for late reply, but just for the sake of completeness the<br>
compdata package defines just the functor you mentioned<br>
<a href="http://hackage.haskell.org/package/compdata-0.11/docs/Data-Comp-Multi-HFunctor.html#t:HFunctor" rel="noreferrer" target="_blank">http://hackage.haskell.org/<wbr>package/compdata-0.11/docs/<wbr>Data-Comp-Multi-HFunctor.html#<wbr>t:HFunctor</a>.<br>
<br>
Regards,<br>
Sergey<br>
<div class="HOEnZb"><div class="h5"><br>
On Tue, Jul 11, 2017 at 9:18 AM, Clinton Mead <<a href="mailto:clintonmead@gmail.com">clintonmead@gmail.com</a>> wrote:<br>
> Hi All<br>
><br>
> Thanks for all your help.<br>
><br>
> I've actually picked up Mario's rank2classes package as it seems like I need<br>
> a little but more power than Functors, as I want things like `liftA2` for<br>
> example.<br>
><br>
> I've pushed across a very simple pull request to you Mario that simply adds<br>
> "PolyKinds" to your list of language extensions. This automatically this<br>
> generalises the kinds your Functor and Apply accept (and perhaps others) as<br>
> I'm quantifying not over * but over a data kind type. No other changes are<br>
> needed.<br>
><br>
> Clinton<br>
><br>
> On Sat, Jul 8, 2017 at 5:57 AM, Mario Blažević <<a href="mailto:mblazevic@stilo.com">mblazevic@stilo.com</a>> wrote:<br>
>><br>
>> On 2017-07-07 12:48 AM, Clinton Mead wrote:<br>
>>><br>
>>> Consider the illustrative code below:<br>
>>> ...<br>
>>>     class MyFunctor f where<br>
>>>        myFmap :: (forall a. t a -> u a) -> f t -> f u<br>
>>> ...<br>
>>><br>
>>><br>
>>> Basically this is a sort of "higher order" functor, but I can't seem to<br>
>>> fit it into an ordinary functor.<br>
>>><br>
>>> But it seems like I'm reinventing the wheel, as my code is suspiciously<br>
>>> like `Functor` but only slightly different.<br>
>>><br>
>>> Has this sort of class already been created and if so what package is it<br>
>>> in?<br>
>><br>
>><br>
>> Yes, I have recently created rank2classes package:<br>
>><br>
>>    <a href="http://hackage.haskell.org/package/rank2classes" rel="noreferrer" target="_blank">http://hackage.haskell.org/<wbr>package/rank2classes</a><br>
>><br>
>>         Apart from the mirror-universe Functor class, the package exports<br>
>> the Applicative, Foldable, Traversable, Applicative, and Distributive<br>
>> classes, as well as some Template Hashell to derive some of their instances<br>
>> automatically.<br>
>><br>
>><br>
>><br>
>><br>
>> ______________________________<wbr>_________________<br>
>> Haskell-Cafe mailing list<br>
>> To (un)subscribe, modify options or view archives go to:<br>
>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
>> Only members subscribed via the mailman list are allowed to post.<br>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> Haskell-Cafe mailing list<br>
> To (un)subscribe, modify options or view archives go to:<br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
> Only members subscribed via the mailman list are allowed to post.<br>
</div></div></blockquote></div><br></div>