<div dir="ltr"><div><div><div>Hi Clinton,<br><br></div><div>HList has some functions that help with defining something similar: <<a href="https://gist.github.com/aavogt/50d5313c99b7224b62dd">https://gist.github.com/aavogt/50d5313c99b7224b62dd</a>>. It might be possible to use less classes to define the replicate/zip/map functions needed (by using more GADTs and type families instead) and end up being allowed to define an instance Control.Category.Category HF.<br><br></div>Your code will be shorter if you make instance heads more general and use equality constraints (~). I mean that the following instance (from my paste) gets selected as long as the first argument to ($) is a function, and no type families are needed:<br> <br><span class="">instance</span> (<span class="">a</span> ~ <span class="">a'</span>, <span class="">b</span> ~ <span class="">b'</span>) <span class="">=></span> <span class="">Dollar</span> (<span class="">a</span> <span class="">-></span> <span class="">b</span>) <span class="">a'</span> <span class="">b'<br></span></div><div><span class=""> where f $ x = f x<br></span></div></div><div><br></div><div></div><div></div><div>Regards,<br></div><div>Adam<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 16, 2016 at 12:21 AM, Clinton Mead <span dir="ltr"><<a href="mailto:clintonmead@gmail.com" target="_blank">clintonmead@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi All<div><br></div><div>I've been doing some work on generalising categories, basically so the composition operator (.) works for not just functions, but things like tuples of functions, whilst still retaining type inference. Control.Category is a bit too restrictive for such instances. </div><div><br></div><div>You can see the details in my blog post here:</div><div><br></div><div><a href="https://clintonmeadprogramming.wordpress.com/2016/02/16/generalising-categories/" target="_blank">https://clintonmeadprogramming.wordpress.com/2016/02/16/generalising-categories/</a><br></div><div><br></div><div>Any comments appreciated, I hope people find it interesting. Also, a quick plug, I'm looking for work, so if there's any Haskell (and/or functional programing) work around Sydney, Australia going I'd be interested. :-)</div><div><br></div><div>If people really think this is useful, tell me, and I'll try to put it up as a package. Alternatively, if it's already been done, I'd appreciate a pointer in that direction.</div><div><br></div><div>Regards,</div><div><br></div><div>Clinton Mead</div></div>
<br>_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div>