fez-lisp 1.2.58 → 1.2.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/compiler.js +4 -1
- package/src/interpreter.js +2 -2
package/package.json
CHANGED
package/src/compiler.js
CHANGED
@@ -53,6 +53,8 @@ const keywordToHelper = (name) => {
|
|
53
53
|
return '__add'
|
54
54
|
case KEYWORDS.MULTIPLICATION:
|
55
55
|
return '__mult'
|
56
|
+
case KEYWORDS.DIVISION:
|
57
|
+
return '__div'
|
56
58
|
case KEYWORDS.SUBTRACTION:
|
57
59
|
return '__sub'
|
58
60
|
case KEYWORDS.GREATHER_THAN:
|
@@ -83,8 +85,9 @@ const lispToJavaScriptVariableName = (name) =>
|
|
83
85
|
)
|
84
86
|
const Helpers = {
|
85
87
|
__add: `__add=(...numbers)=>{return numbers.reduce((a,b)=>a+b,0)}`,
|
86
|
-
__sub: `__sub=(...numbers)=>{return numbers.reduce((a,b)=>a-b,0)}`,
|
88
|
+
__sub: `__sub=(...numbers)=>{return numbers.length===1?-numbers[0]:numbers.reduce((a,b)=>a-b,0)}`,
|
87
89
|
__mult: `__mult=(...numbers)=>{return numbers.reduce((a,b)=>a*b,1)}`,
|
90
|
+
__div: `__div=(...numbers)=>{return numbers.length===1?1/numbers[0]:numbers.reduce((a, b)=>a/b)}`,
|
88
91
|
__gteq: '__gteq=(a,b)=>+(a>=b)',
|
89
92
|
__gt: '__gt=(a,b)=>+(a>b)',
|
90
93
|
__eq: '__eq=(a,b)=>+(a===b)',
|
package/src/interpreter.js
CHANGED
@@ -11,7 +11,8 @@ export const keywords = {
|
|
11
11
|
KEYWORDS.REMAINDER_OF_DIVISION
|
12
12
|
} ${stringifyArgs(args)})`
|
13
13
|
)
|
14
|
-
const
|
14
|
+
const a = evaluate(args[0], env)
|
15
|
+
const b = evaluate(args[1], env)
|
15
16
|
if (typeof a !== 'number' || typeof b !== 'number')
|
16
17
|
throw new TypeError(
|
17
18
|
`Not all arguments of (${KEYWORDS.REMAINDER_OF_DIVISION}) are (${
|
@@ -501,7 +502,6 @@ export const keywords = {
|
|
501
502
|
})
|
502
503
|
return env[name]
|
503
504
|
},
|
504
|
-
[KEYWORDS.NUMBER_TYPE]: () => 0,
|
505
505
|
[KEYWORDS.BITWISE_AND]: (args, env) => {
|
506
506
|
if (args.length < 2)
|
507
507
|
throw new RangeError(
|