diff --git a/assemble-open-coded.rkt b/assemble-open-coded.rkt index b158891..91c605e 100644 --- a/assemble-open-coded.rkt +++ b/assemble-open-coded.rkt @@ -89,7 +89,7 @@ (format "(~a === RUNTIME.NULL)" (first checked-operands))] [(not) - (format "(!(~a))" (first checked-operands))] + (format "(~a === false)" (first checked-operands))] [(eq?) (format "(~a === ~a)" (first checked-operands) (second checked-operands))]))) diff --git a/runtime.js b/runtime.js index 0e9fda4..004cec8 100644 --- a/runtime.js +++ b/runtime.js @@ -687,7 +687,7 @@ Primitives['not'] = function(MACHINE) { var firstArg = MACHINE.env[MACHINE.env.length-1]; - return (!firstArg); + return (firstArg === false); }; Primitives['not'].arity = 1; Primitives['not'].displayName = 'not'; diff --git a/test-browser-evaluate.rkt b/test-browser-evaluate.rkt index 1b3c6c6..502397a 100644 --- a/test-browser-evaluate.rkt +++ b/test-browser-evaluate.rkt @@ -141,6 +141,10 @@ EOF (test '(displayln (not (not 3))) "true\n") +(test '(displayln (not 0)) + "false\n") + + (test '(displayln (add1 1)) "2\n")