<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi,<br>
<br>
<blockquote type="cite"
cite="mid:22c3b2b1-04b9-073f-5e57-63902489fa3d@chordify.net">Is
there any standard or guideline for making a "partial" instance of
a class, by which I mean implementing some methods of a class, but
not all of them? In my concrete case I've got some type X which is
almost an Arrow, except that I cannot lift any function a -> b
to my type (of course I can for some a and b), so I cannot give a
sensible implementation for arr. I can however give sensible
implementations for the other methods in the Arrow class, and I'd
like to use them (and possibly derived combinators) in other
places.
<br>
</blockquote>
<br>
<p>this might not be the general answer you're looking for, but
related to this special case:</p>
<p>Note that arrow syntax (both proc-do-notation and banana
brackets) uses <tt>arr</tt> extensively under the hood. The same
goes for many of the derived combinators. So you can not simply
leave it out. But maybe there's no need to reinvent the wheel
either. What you have probably is something like a <i>profunctor</i>
or a <i>braided category</i>, so you might be in luck finding
some better suited library instead. For the former, probably the <a
moz-do-not-send="true"
href="https://hackage.haskell.org/package/profunctors"><i>profunctors</i></a>
library. For the latter, maybe the <a
href="https://github.com/mikeizbicki/subhask"
moz-do-not-send="true"><i>subhask</i></a> prelude, but more
likely the <a moz-do-not-send="true"
href="https://hackage.haskell.org/package/categories"><i>categories</i></a>
library. If nothing else looking at them might help you better
understand what structure you're dealing with. I personally don't
use subhask, but the hierarchy diagrams and code snippets alone
have been enlightening in the past. They might give you new search
terms on the hunt for a better library.<br>
</p>
<p>Or maybe it's enough to make it an <i>Applicative</i>?<br>
</p>
<p>As a sidenote, I've seen this exact problem mentioned several
times. Many nice things are almost arrows without an <tt>arr</tt>.
But the arrow machinery pre-dates our current hierarchies and
understanding, and it's never really been revised. From a more
modern point of view there's little reason for its prominent place
in <tt>base</tt>, except as an honorary member. There has also
been discussion if/how the notation might be generalized. But it
seems the pain was never strong enough, no one knows of a golden
way forward, and there's always been ways around this. Oh well.</p>
<p>Cheers,<br>
MarLinn<br>
</p>
<br>
</body>
</html>