In fairness, elisp is pretty weird. Doesn't it still use dynamic scope? :P
Sincerely, the guy who writes stuff like
execute a:method . resolve(expand('%:p:h') . "/" . tolower(a:entry) . ".ext")
(Yes, vimscript is insane, too)