For the following at the REPL:
(defn print-foo [fb]
(apply (case fb
:foo #'foo
:bar #'bar) []))
This was emitted previously:
(function (){try{return cljs.core.pr_str.call(null,(function (){var ret__4021__auto__ = cljs.user.print_foo = (function cljs$user$print_foo(fb){
return cljs.core.apply.call(null,(function (){var G__5532 = (((fb instanceof cljs.core.Keyword))?fb.fqn:null);
switch (G__5532) {
case "bar":
return new cljs.core.Var(function(){return cljs.user.bar;},return new cljs.core.Symbol("cljs.user","bar","cljs.user/bar",669987796,null);
,return cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"bar","bar",254284943,null),"NO_SOURCE_FILE",10,"bar",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.bar)?cljs.user.bar.cljs$lang$test:null)]);
);
break;
case "foo":
return new cljs.core.Var(function(){return cljs.user.foo;},return new cljs.core.Symbol("cljs.user","foo","cljs.user/foo",-727488832,null);
,return cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"foo","foo",-1385541733,null),"NO_SOURCE_FILE",10,"foo",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.foo)?cljs.user.foo.cljs$lang$test:null)]);
);
break;
default:
throw (new Error([cljs.core.str("No matching clause: "),cljs.core.str(fb)].join('')));
}
})(),cljs.core.PersistentVector.EMPTY);
});
cljs.core._STAR_3 = cljs.core._STAR_2;
cljs.core._STAR_2 = cljs.core._STAR_1;
cljs.core._STAR_1 = ret__4021__auto__;
return ret__4021__auto__;
})());
}catch (e5530){var e__4022__auto__ = e5530;
cljs.core._STAR_e = e__4022__auto__;
throw e__4022__auto__;
}})()
and you now get this with master:
(function (){try{return cljs.core.pr_str.call(null,(function (){var ret__4029__auto__ = cljs.user.print_foo = (function cljs$user$print_foo(fb){
return cljs.core.apply.call(null,(function (){var G__5639 = (((fb instanceof cljs.core.Keyword))?fb.fqn:null);
switch (G__5639) {
case "bar":
return new cljs.core.Var(function(){return cljs.user.bar;},new cljs.core.Symbol("cljs.user","bar","cljs.user/bar",669987796,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"bar","bar",254284943,null),"NO_SOURCE_FILE",10,"bar",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.bar)?cljs.user.bar.cljs$lang$test:null)]));
break;
case "foo":
return new cljs.core.Var(function(){return cljs.user.foo;},new cljs.core.Symbol("cljs.user","foo","cljs.user/foo",-727488832,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"foo","foo",-1385541733,null),"NO_SOURCE_FILE",10,"foo",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.foo)?cljs.user.foo.cljs$lang$test:null)]));
break;
default:
throw (new Error([cljs.core.str("No matching clause: "),cljs.core.str(fb)].join('')));
}
})(),cljs.core.PersistentVector.EMPTY);
});
cljs.core._STAR_3 = cljs.core._STAR_2;
cljs.core._STAR_2 = cljs.core._STAR_1;
cljs.core._STAR_1 = ret__4029__auto__;
return ret__4029__auto__;
})());
}catch (e5637){var e__4030__auto__ = e5637;
cljs.core._STAR_e = e__4030__auto__;
throw e__4030__auto__;
}})()
For this
(defn print-foo [fb]
(let [foo-map {:foo #'foo :bar #'bar}]
(apply (get foo-map fb) [])))
Previously:
(function (){try{return cljs.core.pr_str.call(null,(function (){var ret__4021__auto__ = cljs.user.print_foo = (function cljs$user$print_foo(fb){
var foo_map = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"foo","foo",1268894036),new cljs.core.Var(function(){return cljs.user.foo;},new cljs.core.Symbol("cljs.user","foo","cljs.user/foo",-727488832,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"foo","foo",-1385541733,null),"NO_SOURCE_FILE",10,"foo",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.foo)?cljs.user.foo.cljs$lang$test:null)])),new cljs.core.Keyword(null,"bar","bar",-1386246584),new cljs.core.Var(function(){return cljs.user.bar;},new cljs.core.Symbol("cljs.user","bar","cljs.user/bar",669987796,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"bar","bar",254284943,null),"NO_SOURCE_FILE",10,"bar",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.bar)?cljs.user.bar.cljs$lang$test:null)]))], null);
return cljs.core.apply.call(null,cljs.core.get.call(null,foo_map,fb),cljs.core.PersistentVector.EMPTY);
});
cljs.core._STAR_3 = cljs.core._STAR_2;
cljs.core._STAR_2 = cljs.core._STAR_1;
cljs.core._STAR_1 = ret__4021__auto__;
return ret__4021__auto__;
})());
}catch (e5534){var e__4022__auto__ = e5534;
cljs.core._STAR_e = e__4022__auto__;
throw e__4022__auto__;
}})()
Now:
(function (){try{return cljs.core.pr_str.call(null,(function (){var ret__4029__auto__ = cljs.user.print_foo = (function cljs$user$print_foo(fb){
var foo_map = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"foo","foo",1268894036),new cljs.core.Var(function(){return cljs.user.foo;},new cljs.core.Symbol("cljs.user","foo","cljs.user/foo",-727488832,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"foo","foo",-1385541733,null),"NO_SOURCE_FILE",10,"foo",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.foo)?cljs.user.foo.cljs$lang$test:null)])),new cljs.core.Keyword(null,"bar","bar",-1386246584),new cljs.core.Var(function(){return cljs.user.bar;},new cljs.core.Symbol("cljs.user","bar","cljs.user/bar",669987796,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"bar","bar",254284943,null),"NO_SOURCE_FILE",10,"bar",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.bar)?cljs.user.bar.cljs$lang$test:null)]))], null);
return cljs.core.apply.call(null,cljs.core.get.call(null,foo_map,fb),cljs.core.PersistentVector.EMPTY);
});
cljs.core._STAR_3 = cljs.core._STAR_2;
cljs.core._STAR_2 = cljs.core._STAR_1;
cljs.core._STAR_1 = ret__4029__auto__;
return ret__4029__auto__;
})());
}catch (e5641){var e__4030__auto__ = e5641;
cljs.core._STAR_e = e__4030__auto__;
throw e__4030__auto__;
}})()
For this:
(defn print-foo [fb]
(let [f (case fb
:foo #'foo
:bar #'bar)]
(apply f [])))
Previously:
(function (){try{return cljs.core.pr_str.call(null,(function (){var ret__4021__auto__ = cljs.user.print_foo = (function cljs$user$print_foo(fb){
var f = (function (){var G__5532 = (((fb instanceof cljs.core.Keyword))?fb.fqn:null);
switch (G__5532) {
case "bar":
return new cljs.core.Var(function(){return cljs.user.bar;},return new cljs.core.Symbol("cljs.user","bar","cljs.user/bar",669987796,null);
,return cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"bar","bar",254284943,null),"NO_SOURCE_FILE",10,"bar",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.bar)?cljs.user.bar.cljs$lang$test:null)]);
);
break;
case "foo":
return new cljs.core.Var(function(){return cljs.user.foo;},return new cljs.core.Symbol("cljs.user","foo","cljs.user/foo",-727488832,null);
,return cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"foo","foo",-1385541733,null),"NO_SOURCE_FILE",10,"foo",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.foo)?cljs.user.foo.cljs$lang$test:null)]);
);
break;
default:
throw (new Error([cljs.core.str("No matching clause: "),cljs.core.str(fb)].join('')));
}
})();
return cljs.core.apply.call(null,f,cljs.core.PersistentVector.EMPTY);
});
cljs.core._STAR_3 = cljs.core._STAR_2;
cljs.core._STAR_2 = cljs.core._STAR_1;
cljs.core._STAR_1 = ret__4021__auto__;
return ret__4021__auto__;
})());
}catch (e5530){var e__4022__auto__ = e5530;
cljs.core._STAR_e = e__4022__auto__;
throw e__4022__auto__;
}})()
Now:
(function (){try{return cljs.core.pr_str.call(null,(function (){var ret__4029__auto__ = cljs.user.print_foo = (function cljs$user$print_foo(fb){
var f = (function (){var G__5647 = (((fb instanceof cljs.core.Keyword))?fb.fqn:null);
switch (G__5647) {
case "bar":
return new cljs.core.Var(function(){return cljs.user.bar;},new cljs.core.Symbol("cljs.user","bar","cljs.user/bar",669987796,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"bar","bar",254284943,null),"NO_SOURCE_FILE",10,"bar",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.bar)?cljs.user.bar.cljs$lang$test:null)]));
break;
case "foo":
return new cljs.core.Var(function(){return cljs.user.foo;},new cljs.core.Symbol("cljs.user","foo","cljs.user/foo",-727488832,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"source","source",-433931539),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[new cljs.core.Symbol(null,"cljs.user","cljs.user",877795071,null),new cljs.core.Symbol(null,"foo","foo",-1385541733,null),"NO_SOURCE_FILE",10,"foo",7,1,1,cljs.core.list(new cljs.core.Symbol(null,"quote","quote",1377916282,null),cljs.core.list(cljs.core.PersistentVector.EMPTY)),null,(cljs.core.truth_(cljs.user.foo)?cljs.user.foo.cljs$lang$test:null)]));
break;
default:
throw (new Error([cljs.core.str("No matching clause: "),cljs.core.str(fb)].join('')));
}
})();
return cljs.core.apply.call(null,f,cljs.core.PersistentVector.EMPTY);
});
cljs.core._STAR_3 = cljs.core._STAR_2;
cljs.core._STAR_2 = cljs.core._STAR_1;
cljs.core._STAR_1 = ret__4029__auto__;
return ret__4029__auto__;
})());
}catch (e5645){var e__4030__auto__ = e5645;
cljs.core._STAR_e = e__4030__auto__;
throw e__4030__auto__;
}})()