Can't you take te same approach ClojureScript took, i.e. to generate a straitforward translation to JavaScript, and then let Google's closure compiler take care of the optimizing thing ?
For instance, for this Roy generated JS:
var True = function(){};
var False = function(){};
var getBool = function(b, ifTrue, ifFalse) {
return (function() {
if(b instanceof True) {
return ifTrue;
} else if(b instanceof False) {
return ifFalse;
}
})();
}
The Closure compiler generates: var True = function() {
}, False = function() {
}, getBool = function(b, c, d) {
var a;
b instanceof True ? a = c : b instanceof False && (a = d);
return a
};