> crazy semantics become far more doable.
Not really – the ‘front end’ (ie: parsing, type checking etc) is pretty much the same as a real compiler’s. Only the back end is simplified, and that doesn’t have to deal with syntax at all, as all that stuff is out of the way.
To support this, in addition to the above, the return statement would need to change, the compiler would have to be able to ‘unpack’ values so func1( func2() ) could work, a new ‘type’ would need to be added etc, at which point you’re effectively implementing tuples!