<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Tue, Oct 29, 2013 at 10:37 AM, Tab Atkins Jr. <span dir="ltr"><<a href="mailto:jackalmage@gmail.com" target="_blank">jackalmage@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 class="im">On Tue, Oct 29, 2013 at 10:01 AM, Tristan Zajonc<br>
<<a href="mailto:tristan@senseplatform.com">tristan@senseplatform.com</a>> wrote:<br>
> Following up on the discussion about operator overloading, what are viable<br>
> options for introducing novel infix operators or a class of<br>
> extended/prefixed operators?<br>
><br>
> For motivation, I along with some others have implemented a MATLAB/R like<br>
> environment for JS. We've written a compile-to-js language that supports,<br>
> among other things, operator overloading and prefixed operators,  However<br>
> we'd much prefer to follow ES6/7 and ideally avoid the need for a<br>
> compile-to-js language entirely, at least in the future.  Without going into<br>
> the details, prefixed operators are useful for defining objectwise and<br>
> elementwise operations on matrices, which is a core type in technical<br>
> computing (see Julia, MATLAB, Mata, Python PEP 225).<br>
><br>
> Assuming JS allowed prefixed operators:<br>
><br>
> 1. What would be the most likely syntax?  As a reference, Julia and Matlab<br>
> use dots, a .+ b.  Stata's Mata languages uses colons, a :+ b.  PEP225<br>
> proposes tildle a ~+ b.  R uses %infix% but this is widely viewed as a bad<br>
> choice.  The technical community would prefer dots.  I know these prefixes<br>
> all having meanings alone, but does .op introduce any ambiguity?  Are there<br>
> other lightweight options?<br>
<br>
</div>Yes, .op is completely unusable.  "foo .bar" is identical to "foo.bar".<br>
<span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br></div><div>Sorry, at most I'm only proposing every *existing* operator prefixed by ., not new operators.  So things like</div><div>.+, ./, .*, .-., .%, .==, .!=, .>, .<, etc.  These would be called dot operators.  This is all that's required by the</div>
<div>technical computing use case.</div><div><br></div><div>There's a question of whether to allow arbitrary operators, which would require a new symbol obviously.  I personally don't think arbitrary operators are worth the noise and complexity.  I'd leave this issue to macros.</div>
</div></div></div>