<div><font color="#3333ff"><font size="4">Thanks, that helped (monomorphism restriction and copointed)...</font></font></div>
<p><font color="#3333ff"><font size="4">I&#39;ll see if I can come up with a more specific example!</font></font></p>
<div><br><br></div>
<div class="gmail_quote">On Tue, Mar 9, 2010 at 6:12 PM, Maciej Piechotka <span dir="ltr">&lt;<a href="mailto:uzytkownik2@gmail.com">uzytkownik2@gmail.com</a>&gt;</span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div class="im">On Tue, 2010-03-09 at 15:50 +0100, Giuseppe Maggiore wrote:<br>&gt;<br>&gt; class (CNum n, HasField n (a -&gt; (b,rec a)) l, Convert rec) =&gt;<br>&gt; HasMethod n l a b rec where<br>&gt;<br>&gt;   (..!) :: l -&gt; n -&gt; (a -&gt; (b,a))<br>
&gt;<br>&gt;<br>&gt;<br>&gt; instance (CNum n, HasField n (a -&gt; (b,rec a)) l, Convert rec) =&gt;<br>&gt; HasMethod n l a b rec where<br>&gt;<br>&gt;   l ..! n =<br>&gt;<br>&gt;          let m = l .! n<br>&gt;<br>&gt;          in (\x -&gt;<br>
&gt;<br>&gt;               let (y,v) = m x<br>&gt;<br>&gt;               in (y,convert v))<br>&gt;<br>&gt;<br><br></div>i think you have in mind something like:<br><br>import Control.Arrow<br><br>(..!) :: (CNum n, HasField n (a -&gt; (b,rec a)) l, Convert rec) =&gt;<br>

<div class="im">        l -&gt; n -&gt; (a -&gt; (b,a))<br></div>l ..! n = second convert . (l .! n)<br><br>1. I don&#39;t see a point of creating class. I mean you provide a wildcard<br>implementation - why not provide just a method?<br>
2. I&#39;m afraid that it might be monomorphism restriction. But I&#39;m not<br>sure.<br>3. Without code I can hardly test the problems ;) I can write what I<br>_think_ code would look like.<br><br>Regards<br>PS. I would be grateful for ASCII-only posts:<br>
<a href="http://www.asciiribbon.org/" target="_blank">http://www.asciiribbon.org/</a><br>PPS. convert looks strangly similar to copointed:<br><a href="http://hackage.haskell.org/packages/archive/category-extras/0.53.5/doc/html/Control-Functor-Pointed.html#t%3ACopointed" target="_blank">http://hackage.haskell.org/packages/archive/category-extras/0.53.5/doc/html/Control-Functor-Pointed.html#t%3ACopointed</a><br>
<br><br><br>_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a></blockquote>
</div><br><br clear="all"><br>-- <br>Giuseppe Maggiore<br>Ph.D. Student (Languages and Games)<br>Microsoft Student Partner<br>Mobile: +393319040031<br>Office: +390412348444<br><br><br>