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 CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "fez-lisp",
3
3
  "description": "Lisp interpreted & compiled to JavaScript",
4
4
  "author": "AT290690",
5
- "version": "1.2.58",
5
+ "version": "1.2.59",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "keywords": [
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)',
@@ -11,7 +11,8 @@ export const keywords = {
11
11
  KEYWORDS.REMAINDER_OF_DIVISION
12
12
  } ${stringifyArgs(args)})`
13
13
  )
14
- const [a, b] = args.map((x) => evaluate(x, env))
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(