I think there is a confusion on the arguments being made here.
-
The argument that using
function(2)can be the cause of confusion - because I can accidentally pass it around as a enumerable is a valid one -
The argument that using
function(2)is somewhat more dangerous is incorrect though. The issue that can be triggered withfunction(2)would also help if we wrapped it in aStreamor any other struct, because Streams are fundamentally about passing continuations of code around and changing it fromfunction(2)toStreamwon’t fix it.
So while the first argument 1 is valid and has some merit - it is not a major improvement to justify changing the current feature set. Maybe there could be other benefits in making them more structured - but if there are, I am not aware of them at the moment.
I don’t think it would make the implementation easier to digest as well. As ultimately the difference would be that a function would return Stream.stream(&foo(&1, &2)) instead of &foo(&1, &2). Streams are naturally complex, given the fact they provide zipping, filtering, and protection against dangling resources. Wrapping an anonymous function call in a remote call or not is not going to do much to counter that.


















