For "match", it needs to be an expression for some things so that means wrapping it in a function and returning the result. In the future I'm going to do some optimisation to see if the expression is the last in a function and remove the wrapper. For example:
return (function() {
if(b instanceof True) {
return ifTrue;
} else if(b instanceof False) {
return ifFalse;
}
})();
Can just become: if(b instanceof True) {
return ifTrue;
} else if(b instanceof False) {
return ifFalse;
}
The output of `with` is pretty gross. Definitely want to hear ideas on how to clean it up :)