<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 >--c--> is quite a bit longer than ~>.</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: 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? I just thought of two variations that seem to provide a decent notation for writing arrow-ish programs. 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 </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 ---> 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 => (x ---> y) c -> (y ---> z) c -> (x ---> 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 >-- (c :: * -> * -> *) = c a</font></div><div class="gmail_quote">
<font face="courier new, monospace">type c --> b = 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 >--</font></div>
<div class="gmail_quote"><font face="courier new, monospace">infix 1 --></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 => (x >--c--> y) -> (y >--c--> z) -> (x >--c--> 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>