<div dir="ltr"><div>I don't think it's ambiguous syntactically - the two space-separated id tokens are unambiguously the start of a variable declaration, so the open paren can be interpreted unambiguously.</div><div><br>I think the main downside would be that users have remember a special-case way to assign a struct at declaration time.<br><br>Swift/T also has (I think 100% consistently) a rule that the only way to assign a variable is for it to be on the LHS of a = . I think the consistency of that is good.<br><br></div><div>With the expression syntax plus automatic variable declaration, it's actually possible to shorten:<br><br></div><div>foo bar = foo(1,2);<br></div><div><br></div><div>to:<br><br></div><div>bar = foo(1,2);<br></div><div><br></div><div>- Tim<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 4, 2015 at 10:50 AM, Justin M Wozniak <span dir="ltr"><<a href="mailto:wozniak@mcs.anl.gov" target="_blank">wozniak@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div><br>
There's also this compact style:<br>
<br>
foo bar(1,2);<br>
<br>
Is it ambiguous? C++ has issues with this.<div><div class="h5"><br>
<br>
On 02/03/2015 04:54 PM, Tim Armstrong wrote:<br>
</div></div></div>
<blockquote type="cite"><div><div class="h5">
<div dir="ltr">
<div>
<div>
<div>Hi All,<br>
</div>
While designing a location-aware feature for Swift/T
Justin and I came across a scenario where we wanted to use
Swift structs, but where it was very painful to assign each
element individually. To give you an idea:<br>
<br>
type foo {<br>
</div>
int x;<br>
</div>
int y;<br>
<div>
<div>}<br>
<br>
</div>
<div>foo bar;<br>
bar.x = 1;<br>
bar.y = 2;<br>
<br>
</div>
<div>I'm looking at adding a feature where we can fill in a
structs fields with a single expression.<br>
<br>
</div>
<div>We could do them the C-style way, but that doesn't allow
us to use them without defining a new variable (the issue is
that {} doesn't specify the intended type, meaning it needs
to come from context):<br>
<br>
</div>
<div>foo bar = { 1, 2 };<br>
<br>
</div>
<div>I was thinking that we should just have types function
as named constructor functions. There's precedent both in
object-oriented languages and with Haskell's algebraic data
types. Now you can just use this expression wherever
needed:<br>
<br>
foo(1, 2)<br>
<br>
</div>
<div>Thoughts? I'm reluctant to add new incompatibilities
with Swift/K, but this seems like it would be really clunky
otherwise.<br>
<br>
</div>
<div>- Tim<br>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
Swift-devel mailing list
<a href="mailto:Swift-devel@ci.uchicago.edu" target="_blank">Swift-devel@ci.uchicago.edu</a>
<a href="https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-devel" target="_blank">https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-devel</a><span class="HOEnZb"><font color="#888888">
</font></span></pre><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
<br>
<pre cols="72">--
Justin M Wozniak</pre>
</font></span></div>
</blockquote></div><br></div>