Variadic functions and what we now call "<hole>-able" evaluative arguments came into being around the same time.
I did a little demo back then of a trick with the + operator, where if it noticed there was "nothing" on its left hand side, it would switch into a summation mode:
>> 1 + 2
== 3
>> + 1 2 3 4
== 10
...Unpredictable If Expressions Span Newlines, But...
I'm pretty sure it's time to force you to use some kind of continuation if you want expressions to span newlines.
Also, I'm simplifying things so some of the weirder cases error:
if + 1 2 3 [print "This won't be legal"]
if (+ 1 2 3) [print "You'd have to do this"]
Similarly, functions that take their arguments from the left would error:
six: {letter: literally x + 1 2 3} ; not legal
six: {letter: literally x, + 1 2 3} ; legal
six: {
literally x
+ 1 2 3 ; legal
}
One Potential Problem: Weird FRAME! Interface
There's a relatively simple interface for today's ADD:
>> make frame! add/
== &[frame! [
value1: ~null~ ; hole
value2: ~null~ ; hole
]]
So it's predictable to APPLY and use. And today you get that same predictability with +:
>> make frame! +/
== &[frame! [
value1: ~null~ ; hole
value2: ~null~ ; hole
]]
But if + were a variadic function, you run into some strangeness.
Could this strangeness be finessed, to where + still could act like ADD, just with extra features?
Perhaps if you put a single non-variadic value into a variadic slot, then the function runs as if it has a variadic feed of one value?
That would be a pretty slick feature for variadics in general.
I Think It's Worth Considering
I'm glad that all these rules about "endability" and infix are getting more pinned down. This may make it worth it to have the summing-variadic + in the box.