<div dir="ltr">Scala allows a method with one argument to be used infix with spaces either side, this would allow<div><br></div><div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>for index in 1 ..&lt; 10 by 2 { ... }</div></blockquote><br></div><div>if Range had a by method.</div><div><br></div><div>This feature has proved popular in Scala.</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature">  -- Howard.<br></div></div>
<br><div class="gmail_quote">On 29 March 2016 at 21:37, Haravikk via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Personally I prefer the requirement of spaces; if you require a method to have textual operators without spaces then IMO it’s probably not a good place to use a textual operator in the first place.</div><div><br></div><div>I like the space requirement as it essentially lets textual operators be custom keywords, for example the recent thread on striding for loops, we could do the following:</div><div><br></div><div><span style="white-space:pre-wrap">        </span>for eachIndex in 1 ..&lt; 10 by 2 { … }</div><div><br></div><div>With the “by” defined as a custom operator on Range, rather than defining a new keyword or for loop variant (since it’s still essentially a for in loop). It’s really just a nicer alternative to: (1 ..&lt; 10).by(2).</div><br><div><blockquote type="cite"><div>On 28 Mar 2016, at 16:21, Thorsten Seitz via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br><div><div style="word-wrap:break-word"><div><blockquote type="cite"><div>Am 08.01.2016 um 09:38 schrieb Jacob Bandes-Storch via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;:</div><br><div><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">I&#39;d be hesitant to support something like this. • is a very natural choice for a binary operator by itself, and restricting it to require the use of spaces seems unfortunate.</div></div></blockquote><br>What about if • would have to begin and end an operator containing letters?<div><br></div><div>x = a •times• b •mod• 8</div><div><br></div><div>This looks more symmetrically (like Haskell’s backticks) and wouldn’t need the restriction to require spaces.</div><div><br></div><div>Or maybe</div><div><br></div><div>x = a ‹times› b ‹mod› 8</div><div><br></div><div>Also easily typeable on a Mac keyboard.<div><blockquote type="cite"></blockquote></div></div><div><br></div><div><br></div><blockquote type="cite"><div><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div>Re: free functions vs. methods: why does this matter? Supposing `foo` were the syntax (bad choice, because it already has another meaning, but bear with me), then you could disambiguate &quot;a `foo` b&quot; vs &quot;a `self.foo` b&quot; just as you can with regular function calls.</div></div></div></blockquote><div><br></div>Indeed.</div><div><br></div><div>-Thorsten</div><div><br></div><div><br><blockquote type="cite"><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div>Re: named parameters: there are two clear choices:</div><div>- Restrict such a syntax to functions without named parameters (seems acceptable to me).</div><div>- Ignore parameter names, allowing any binary function to be used (challenges with disambiguation, which I believe has had some discussion in the other thread about function names).</div><div><br></div><div>This might be a crazy idea, but is it possible to support &quot;a myfunc b&quot; without any extra delimiters? As far as I can tell, there&#39;s currently no way this could parse as a valid expression, so there&#39;s no ambiguity to resolve, although I imagine it would be hard to make diagnostics work well. I&#39;m not sure how this would play with precedence, but that hasn&#39;t been discussed for any of the other solutions either.</div><div class="gmail_extra"><br clear="all"><div><div><div dir="ltr"><div>Jacob Bandes-Storch<br></div></div></div></div><br><div class="gmail_quote">On Fri, Jan 8, 2016 at 12:29 AM, Jo Albright via swift-evolution<span> </span><span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span><span> </span>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><span><div><blockquote type="cite"><div>The rationale is the same - the design of Swift really wants operators and identifiers to be partitioned into different namespaces.  Violating that would make it impossible to parse a swift file without parsing all of its imports.  This is a mistake that C made (you have to parse all the headers a file uses to reliably parse the file) that we don’t want to replicate in Swift.</div></blockquote></div><div><br></div><div><br></div></span>Thanks Chris. I now understand the reasoning for separating the two groups. I don’t have a background in language creation, so whatever I can learn from these email lists is awesome. I have already gained a ton of knowledge following these conversations.<div><span><div><br></div><div><br></div><div><blockquote type="cite">Alternative: Reserve one of the operator characters as an operator introducer. Everything from that character to the next whitespace is an operator name. This would allow non-operator characters in operator names while still preserving the strict operator/identifier separation.<br><br>   // • is the operator introducer character<br>   infix operator •times …<br>   infix operator •mod …<br>   x = a •times b •mod 8<br><br>Limitations:<br>You still can&#39;t use an unadorned word as an operator name.<br>You can&#39;t use such an operator without whitespace (unlike operators whose names use operator characters only). </blockquote></div><div><br></div><div><br></div></span><div>Oooooo … that is a very cool alternative Greg. Honestly went into this proposal thinking there was no possibility, but now I have a glimmer of hope.</div><div><br></div><div>Using “•” (option + 8 on keyboard) would be great since it is accessible through key combo, but isn’t widely used in normal expressions.</div><div><br></div><div>What is needed to prove worth of such a feature to be added?</div><span><div><br></div><div><div><br><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"><font color="#8d8d8d"><span> </span>Nerd . Designer . Developer</font></span><font color="#464646"><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Jo Albright</span></font><br></div><br></div></span></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=P-2BsYbBZHRBuLDBJaL4DIKDNfkkjpROowTyRAObV11qx-2FPIUYpQPl-2FpPBsPrAgcTRvn0wtVwSmRsU8e9zDesB6DitQzzJGzZMWaK8DuH-2FhcKd-2Bc4cKAi4f8c6jiZM9XcIJxraDuifdoDZjrxXzpoaiVyWPuJRkEPbub7J-2FiPpv3268IkAAC45TMPdXIocW8meBz3x2-2BrUY-2F1iODUKB9WRlYIH3dMFTxBlBqi6QeLmVdo-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important"></div><br>_______________________________________________<br>swift-evolution mailing list<br><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br><br></blockquote></div><br></div></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=1MXK54sosN3xru3iYcLt0oBZ2w20i49gyogXctgrspd2UyBFRJM4p1vqAvWjM5RbeCy26t4gBdqvQt0m5FYVK-2Bhn-2BYW29PEKSNglRotfag0KZCPcQDNyJuh4FylvOIv078WDdBqSgyGWuLfhmu1xeKAW4PuLvVEXBcH2kmBpDnwoYtz0G5-2FxrsWVW4-2B2aK-2F0LUbZtiTymvWaYcGNYSTf3XsH3-2FkYAnK2ODmDjOUdftE-3D" alt="" width="1" height="1" border="0" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"><span> </span>_______________________________________________</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">swift-evolution mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="mailto:swift-evolution@swift.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">swift-evolution@swift.org</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a></blockquote></div><br></div>_______________________________________________<br>swift-evolution mailing list<br><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div></blockquote></div><br></div><br>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div>