<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>Note that nobody was suggesting two pragmas with incompatible behaviors, only to have just one symbol reserved to still be able to have type operator variables.<div><br></div><div>I do like your suggestion, although &gt;--c--&gt; is quite a bit longer than ~&gt;.</div><div><br></div><div>Sjoerd</div><div><br><div><div>On Sep 17, 2012, at 6:28 PM, Iavor Diatchki wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hello,<br><br><div class="gmail_quote">I think that it would be a mistake to have two pragmas with incompatible behaviors: &nbsp;for example, we would not be able to write modules that use Conal's libraries and, say, the type nats I've been working on.</div>
<div class="gmail_quote">If the main issue is the notation for arrows, has anoyone played with what can be done with the current (7.6) system? &nbsp;I just thought of two variations that seem to provide a decent notation for writing arrow-ish programs. &nbsp;The second one, in particular, mirrors the arrow notation at the value level, so perhaps that would be enough?</div>
<div class="gmail_quote"><br></div><div class="gmail_quote">-Iavor</div><div class="gmail_quote"><br></div><div class="gmail_quote"><font face="courier new, monospace"><br></font></div><div class="gmail_quote"><div class="gmail_quote">
<font face="courier new, monospace">{-# LANGUAGE TypeOperators, KindSignatures #-}</font></div><div class="gmail_quote"><font face="courier new, monospace">module Test where</font></div><div class="gmail_quote"><font face="courier new, monospace"><br>
</font></div><div class="gmail_quote"><font face="courier new, monospace">import Control.Category&nbsp;</font></div><div class="gmail_quote"><font face="courier new, monospace"><br></font></div><div class="gmail_quote"><font face="courier new, monospace">-- Variant 1: Post-fix annotation</font></div>
<div class="gmail_quote"><font face="courier new, monospace"><br></font></div><div class="gmail_quote"><font face="courier new, monospace">type (a ---&gt; b) c = c a b</font></div><div class="gmail_quote"><font face="courier new, monospace"><br>
</font></div><div class="gmail_quote"><font face="courier new, monospace">f :: Category c =&gt; (x ---&gt; y) c -&gt; (y ---&gt; z) c -&gt; (x ---&gt; z) c</font></div><div class="gmail_quote"><font face="courier new, monospace">f = undefined</font></div>
<div class="gmail_quote"><font face="courier new, monospace"><br></font></div><div class="gmail_quote"><font face="courier new, monospace"><br></font></div><div class="gmail_quote"><font face="courier new, monospace">-- Variant 2: Arrow notation</font></div>
<div class="gmail_quote"><font face="courier new, monospace"><br></font></div><div class="gmail_quote"><font face="courier new, monospace">type a &gt;-- (c :: * -&gt; * -&gt; *) = c a</font></div><div class="gmail_quote">
<font face="courier new, monospace">type c --&gt; b &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= c b</font></div><div class="gmail_quote"><font face="courier new, monospace"><br></font></div><div class="gmail_quote"><font face="courier new, monospace">infix 2 &gt;--</font></div>
<div class="gmail_quote"><font face="courier new, monospace">infix 1 --&gt;</font></div><div class="gmail_quote"><font face="courier new, monospace"><br></font></div><div class="gmail_quote"><font face="courier new, monospace">g :: Category c =&gt; (x &gt;--c--&gt; y) -&gt; (y &gt;--c--&gt; z) -&gt; (x &gt;--c--&gt; z)</font></div>
<div class="gmail_quote"><font face="courier new, monospace">g = undefined</font></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div></div>
_______________________________________________<br>Glasgow-haskell-users mailing list<br><a href="mailto:Glasgow-haskell-users@haskell.org">Glasgow-haskell-users@haskell.org</a><br>http://www.haskell.org/mailman/listinfo/glasgow-haskell-users<br></blockquote></div><br></div></div></body></html>