fez-lisp 1.4.19 → 1.5.0
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/README.md +5 -5
- package/lib/baked/macros.js +1 -1
- package/lib/baked/std.js +1 -1
- package/package.json +1 -1
- package/src/compiler.js +1 -1
- package/src/interpreter.js +1 -1
- package/src/keywords.js +1 -1
- package/src/utils.js +14 -15
package/package.json
CHANGED
package/src/compiler.js
CHANGED
@@ -115,7 +115,7 @@ const Helpers = {
|
|
115
115
|
atom_predicate: `atom_predicate=(number)=>+(typeof number==='number')`,
|
116
116
|
lambda_predicate: `lambda_predicate=(fn)=>+(typeof fn==='function')`,
|
117
117
|
__error: `__error=(error)=>{throw new Error(error.map((x)=>String.fromCharCode(x)).join(''))}`,
|
118
|
-
|
118
|
+
alter_effect: `alter_effect=function(array,index,value){if(arguments.length===1){array.pop()}else{array[index] = value};return array}`
|
119
119
|
}
|
120
120
|
const semiColumnEdgeCases = new Set([
|
121
121
|
';)',
|
package/src/interpreter.js
CHANGED
package/src/keywords.js
CHANGED
package/src/utils.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import std from '../lib/baked/std.js'
|
2
|
+
import debugStd from '../lib/debug/std.js'
|
2
3
|
import { compile } from './compiler.js'
|
3
4
|
import {
|
4
5
|
APPLY,
|
@@ -291,21 +292,19 @@ export const debug = (ast, onSuccess = compile) => {
|
|
291
292
|
...keywords,
|
292
293
|
[DEBUG.CALLSTACK]: [KEYWORDS.BLOCK],
|
293
294
|
[DEBUG.SIGNATURE]: (args, env) => {
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
)
|
308
|
-
return signatures.map(LISP.source).join('\n\n')
|
295
|
+
const signatures =
|
296
|
+
args.length === 0
|
297
|
+
? debugStd[0][1][1].slice(1)
|
298
|
+
: debugStd[0][1][1].filter(
|
299
|
+
(x) =>
|
300
|
+
x[0][TYPE] === APPLY &&
|
301
|
+
x[0][VALUE] === KEYWORDS.DEFINE_VARIABLE &&
|
302
|
+
x[1][TYPE] === WORD &&
|
303
|
+
x[1][VALUE].toString().includes(args[0][VALUE])
|
304
|
+
)
|
305
|
+
return signatures.length === 0
|
306
|
+
? 'Not defined in library'
|
307
|
+
: signatures.map(LISP.source).join('\n\n')
|
309
308
|
},
|
310
309
|
[DEBUG.LOG]: (args, env) => {
|
311
310
|
if (args.length !== 1 && args.length !== 2)
|