<div dir="ltr">I also suggested the fairly simple solution to the null var args problem as having a <span class="lG">varargs</span> parameter mean one or more rather than zero or more occurrences.  It just means you have to define a new method for the null case if needed.<br><div><br></div><div>E.g., the following two methods give you the null and non-null cases for printing values.</div><div>method print(*a) {...}</div><div>method printNewLine {...}</div><div><br></div><div>In my opinion, <span class="lG">varargs</span> are sufficiently rare (particularly for students writing code) that this extra definition is not a major pain.  In fact, I believe Andrew used this for the constructors for the collection classes.  (I believe he has also argued that one should write the version of the methods taking the list/sequence before writing the <span class="lG">vararg</span> version.  Hence there is only a tiny amount of extra work here.)  </div><div><br></div><div>To me, it seems like a fairly simple and straightforward solution to the <span class="lG">varargs</span> problem.</div></div><br><div class="gmail_quote">On Tue, May 26, 2015 at 1:02 AM James Noble <<a href="mailto:kjx@ecs.vuw.ac.nz">kjx@ecs.vuw.ac.nz</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> Minigrace does not do this.<br>
<br>
well I thought something did at some time;<br>
(I probably didn’t like it then).<br>
<br>
>>       we could give up on indexing (which many of you have reached already) which resolves this...<br>
> Or you can use parentheses to pass arbitrary expressions as arguments,<br>
> which seems to be the missing case nobody is talking about...<br>
<br>
so that would be<br>
list.empty<br>
list.with([])<br>
list.with([1, 2, 3])<br>
list.with([1, 2, 3], [4, 5, 6])<br>
<br>
<br>
hmm.  In many ways, I guess typing “([“ and “])” for list arguments is no worse than other options (e.g. [[ ]])<br>
<br>
list.empty<br>
list.with [[]]<br>
list.with [[ 1, 2, 3 ]]<br>
list.with([[1, 2, 3 ]], [[ 4, 5, 6 ]])<br>
<br>
<br>
part of me says: [] reserved for indexing, other bracket ops for literals, so they are syntactically distinct.<br>
<br>
<br>
I guess we could try to ask questions of corpora like: how many different indexing ops would objects need?<br>
how many different matchfix brackets would dialects need?<br>
<br>
I suppose Smalltalk can tell us how many array literals there are vs calls to at: and at: put:<br>
<br>
James<br>
_______________________________________________<br>
Grace-core mailing list<br>
<a href="mailto:Grace-core@cecs.pdx.edu" target="_blank">Grace-core@cecs.pdx.edu</a><br>
<a href="https://mailhost.cecs.pdx.edu/mailman/listinfo/grace-core" target="_blank">https://mailhost.cecs.pdx.edu/mailman/listinfo/grace-core</a><br>
</blockquote></div>