Overloading f(x) call syntax with `call` generic

Hi Stefan,

I can think of two additional things to mention besides the other comments that were already made above:

Allowing people to change the dispatch/call code may allow non-compiler developers to try and implement functional language-like features in a library setting: for example, pattern matching.
Even as an experimental playground - before proposing them to be properly integrated into the language - such a facility may be useful.

The second comment is about the function becoming “irrelevant”. Depending on your point of view, this may or may not be a valid argument. In any programming language, I can already lie:

def i_promise_i_do_foo():
    return do_bar() #Haha, I lied!

In some sense, conceptually, I don’t really see the difference between

+(a, b) = explode_computer()

and

call(f, a, b) = explode_computer() #f completely ignored

Personally, I don’t feel strongly about this topic. I have, a number of times in my career, needed a similar facility, but that may have been a result of other missing features of the languages I was working with at the time.

It may be worthwhile putting this on a “wish list” to be considered later. It is likely to be a better choice to stay conservative for now. I can’t think anything that would break if in the future, the call dispatch mechanism is modified to become more general.

Kind regards,

Tom