fez-lisp 1.5.91 → 1.5.93
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/lib/baked/std.js +1 -1
- package/package.json +1 -1
- package/src/check.js +664 -544
- package/src/compiler.js +1 -0
- package/src/interpreter.js +2 -1
- package/src/keywords.js +2 -1
- package/src/types.js +23 -18
- package/src/utils.js +6 -0
package/src/compiler.js
CHANGED
package/src/interpreter.js
CHANGED
@@ -837,5 +837,6 @@ export const keywords = {
|
|
837
837
|
[STATIC_TYPES.ATOM]: (args, env) => evaluate(args[0], env),
|
838
838
|
[STATIC_TYPES.COLLECTION]: (args, env) => evaluate(args[0], env),
|
839
839
|
[STATIC_TYPES.PREDICATE]: (args, env) => evaluate(args[0], env),
|
840
|
-
[STATIC_TYPES.UNKNOWN]: (args, env) => evaluate(args[0], env)
|
840
|
+
[STATIC_TYPES.UNKNOWN]: (args, env) => evaluate(args[0], env),
|
841
|
+
[STATIC_TYPES.ANY]: (args, env) => evaluate(args[0], env)
|
841
842
|
}
|
package/src/keywords.js
CHANGED
package/src/types.js
CHANGED
@@ -3,15 +3,17 @@ export const ARG_COUNT = 'argumentsN'
|
|
3
3
|
export const VARIADIC = Infinity
|
4
4
|
export const STATS = '__stats__'
|
5
5
|
export const ARGUMENTS = 'arguments'
|
6
|
-
export const UNKNOWN = -1
|
7
6
|
export const RETURNS = 'returns'
|
8
7
|
export const SCOPE_NAME = '__scope__'
|
9
8
|
export const TYPE_PROP = 'type'
|
10
9
|
export const SIGNATURE = 'name'
|
11
10
|
export const ORDER = '__order__'
|
12
11
|
export const VARIABLE_ORDER_INDEX = 'index'
|
13
|
-
export const
|
12
|
+
export const UNKNOWN = -1
|
14
13
|
export const COLLECTION = 3
|
14
|
+
export const PREDICATE = 4
|
15
|
+
export const ANY = 5
|
16
|
+
|
15
17
|
export const MAX_ARGUMENT_RETRY = 1
|
16
18
|
export const MAX_RETRY_DEFINITION = 10
|
17
19
|
export const toTypeNames = (type) => {
|
@@ -21,18 +23,21 @@ export const toTypeNames = (type) => {
|
|
21
23
|
case ATOM:
|
22
24
|
return 'Atom'
|
23
25
|
case UNKNOWN:
|
26
|
+
// case ANY:
|
24
27
|
return 'Unknown'
|
25
28
|
case PREDICATE:
|
26
29
|
return 'Predicate'
|
27
30
|
case COLLECTION:
|
28
31
|
return 'Collection'
|
32
|
+
case ANY:
|
33
|
+
return 'Any'
|
29
34
|
default:
|
30
35
|
break
|
31
36
|
}
|
32
37
|
}
|
33
38
|
export const SPECIAL_FORM_TYPES = {
|
34
39
|
[SCOPE_NAME]: ';',
|
35
|
-
[ORDER]: 0,
|
40
|
+
// [ORDER]: 0,
|
36
41
|
[toTypeNames(APPLY)]: {
|
37
42
|
[STATS]: {
|
38
43
|
[TYPE_PROP]: [APPLY],
|
@@ -301,8 +306,8 @@ export const SPECIAL_FORM_TYPES = {
|
|
301
306
|
[STATS]: {
|
302
307
|
retried: 0,
|
303
308
|
[SIGNATURE]: PLACEHOLDER,
|
304
|
-
[TYPE_PROP]: [
|
305
|
-
[RETURNS]: [
|
309
|
+
[TYPE_PROP]: [ANY],
|
310
|
+
[RETURNS]: [ANY],
|
306
311
|
|
307
312
|
[ARGUMENTS]: [],
|
308
313
|
[ARG_COUNT]: 0
|
@@ -693,7 +698,7 @@ export const SPECIAL_FORM_TYPES = {
|
|
693
698
|
}
|
694
699
|
}
|
695
700
|
],
|
696
|
-
[RETURNS]: [
|
701
|
+
[RETURNS]: [ANY]
|
697
702
|
}
|
698
703
|
},
|
699
704
|
[KEYWORDS.SET_ARRAY]: {
|
@@ -728,8 +733,8 @@ export const SPECIAL_FORM_TYPES = {
|
|
728
733
|
[STATS]: {
|
729
734
|
retried: 0,
|
730
735
|
[SIGNATURE]: PLACEHOLDER,
|
731
|
-
[TYPE_PROP]: [
|
732
|
-
[RETURNS]: [
|
736
|
+
[TYPE_PROP]: [ANY],
|
737
|
+
[RETURNS]: [ANY],
|
733
738
|
|
734
739
|
[ARGUMENTS]: [],
|
735
740
|
[ARG_COUNT]: 0
|
@@ -805,8 +810,8 @@ export const SPECIAL_FORM_TYPES = {
|
|
805
810
|
[STATS]: {
|
806
811
|
retried: 0,
|
807
812
|
[SIGNATURE]: PLACEHOLDER,
|
808
|
-
[TYPE_PROP]: [
|
809
|
-
[RETURNS]: [
|
813
|
+
[TYPE_PROP]: [ANY],
|
814
|
+
[RETURNS]: [ANY],
|
810
815
|
|
811
816
|
[ARGUMENTS]: [],
|
812
817
|
[ARG_COUNT]: 0
|
@@ -816,15 +821,15 @@ export const SPECIAL_FORM_TYPES = {
|
|
816
821
|
[STATS]: {
|
817
822
|
retried: 0,
|
818
823
|
[SIGNATURE]: PLACEHOLDER,
|
819
|
-
[TYPE_PROP]: [
|
820
|
-
[RETURNS]: [
|
824
|
+
[TYPE_PROP]: [ANY],
|
825
|
+
[RETURNS]: [ANY],
|
821
826
|
|
822
827
|
[ARGUMENTS]: [],
|
823
828
|
[ARG_COUNT]: 0
|
824
829
|
}
|
825
830
|
}
|
826
831
|
],
|
827
|
-
[RETURNS]: [
|
832
|
+
[RETURNS]: [ANY]
|
828
833
|
}
|
829
834
|
},
|
830
835
|
[KEYWORDS.NOT]: {
|
@@ -1091,8 +1096,8 @@ export const SPECIAL_FORM_TYPES = {
|
|
1091
1096
|
[STATS]: {
|
1092
1097
|
retried: Infinity,
|
1093
1098
|
[SIGNATURE]: PLACEHOLDER,
|
1094
|
-
[TYPE_PROP]: [
|
1095
|
-
[RETURNS]: [
|
1099
|
+
[TYPE_PROP]: [ANY],
|
1100
|
+
[RETURNS]: [ANY],
|
1096
1101
|
|
1097
1102
|
[ARGUMENTS]: [],
|
1098
1103
|
[ARG_COUNT]: 0
|
@@ -1113,8 +1118,8 @@ export const SPECIAL_FORM_TYPES = {
|
|
1113
1118
|
[STATS]: {
|
1114
1119
|
retried: Infinity,
|
1115
1120
|
[SIGNATURE]: PLACEHOLDER,
|
1116
|
-
[TYPE_PROP]: [
|
1117
|
-
[RETURNS]: [
|
1121
|
+
[TYPE_PROP]: [ANY],
|
1122
|
+
[RETURNS]: [ANY],
|
1118
1123
|
|
1119
1124
|
[ARGUMENTS]: [],
|
1120
1125
|
[ARG_COUNT]: 0
|
@@ -1143,7 +1148,7 @@ export const SPECIAL_FORM_TYPES = {
|
|
1143
1148
|
}
|
1144
1149
|
}
|
1145
1150
|
],
|
1146
|
-
[RETURNS]: [
|
1151
|
+
[RETURNS]: [ANY]
|
1147
1152
|
}
|
1148
1153
|
}
|
1149
1154
|
}
|
package/src/utils.js
CHANGED
@@ -19,6 +19,11 @@ import { OPTIMIZATIONS } from './enchance.js'
|
|
19
19
|
export const logError = (error) =>
|
20
20
|
console.log('\x1b[31m', `\n${error}\n`, '\x1b[0m')
|
21
21
|
export const logSuccess = (output) => console.log('\x1b[32m', output, '\x1b[0m')
|
22
|
+
export const wrapInBracesString = (exp) => `(${stringifyArgs(exp)})`
|
23
|
+
export const logExp = function (exp, marker = ':D') {
|
24
|
+
console.log(marker, wrapInBracesString(exp), ...[...arguments].slice(2))
|
25
|
+
return exp
|
26
|
+
}
|
22
27
|
export const formatCallstack = (callstack) =>
|
23
28
|
callstack
|
24
29
|
.reverse()
|
@@ -326,6 +331,7 @@ export const addTypeIdentities = (ast) => {
|
|
326
331
|
identity(STATIC_TYPES.ATOM),
|
327
332
|
identity(STATIC_TYPES.COLLECTION),
|
328
333
|
identity(STATIC_TYPES.PREDICATE),
|
334
|
+
identity(STATIC_TYPES.ANY),
|
329
335
|
identity(STATIC_TYPES.UNKNOWN)
|
330
336
|
)
|
331
337
|
}
|