<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>