The latest PS interprets QUOTE of a symbol to mean, "first convert this
symbol to a Javascript identifier, then a string". This breaks our code,
because our formula parser relies on symbols to represent operators. Here's
a line of code that PS was generating for us nicely before:
(defparameter *op-symbols* '(| | + - * / ^ < > = <> <= >= & % ! { } [ ] |(|
|)| |:| |,| |"| |'|))
=>
var OPSYMBOLS = [' ', '+', '-', '*', '/', '^', '<', '>', '=', '<>', '<=',
'>=', '&', '%', '!', '{', '}', '[', ']', '(', ')', ':', ',', '"', '\''];
In the new PS, it looks like this:
var OPSYMBOLS = [' ', 'plus', '', 'star', 'slash', '^', '<', '>', 'equals',
'<>', '<equals', '>equals', '&', 'percent', 'bang', '{', '}', '[', ']', '(',
')', 'colon', ',', '"', '\''];
I think this is a mistake. The only reason for translating symbols like + to
"plus" is if you want to use them in a JS identifier. But quoted symbols are
not meant to turn into JS identifiers, only JS strings.
Looking at the git log, this change was introduced into special-forms.lisp
by commit dd4442b8973fe8b2c19b44f94f244934aa418ae8. This was submitted at
the time as a bug fix. From our point of view, this "fix" introduces a bug,
and quite a serious one, since it means we can't run our formula parser (and
a few other things) in the browser.
Daniel