fez-lisp 1.5.91 → 1.5.92

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/src/compiler.js CHANGED
@@ -268,6 +268,7 @@ const comp = (tree, Drill) => {
268
268
  case STATIC_TYPES.UNKNOWN:
269
269
  case STATIC_TYPES.ATOM:
270
270
  case STATIC_TYPES.PREDICATE:
271
+ case STATIC_TYPES.ANY:
271
272
  return compile(tail[0], Drill)
272
273
 
273
274
  default: {
@@ -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
@@ -13,7 +13,8 @@ export const STATIC_TYPES = {
13
13
  UNKNOWN: 'Unknown',
14
14
  ATOM: 'Atom',
15
15
  COLLECTION: 'Collection',
16
- PREDICATE: 'Predicate'
16
+ PREDICATE: 'Predicate',
17
+ ANY: 'Any'
17
18
  }
18
19
  export const KEYWORDS = {
19
20
  LOOP: 'loop',
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 PREDICATE = 4
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]: [UNKNOWN],
305
- [RETURNS]: [UNKNOWN],
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]: [UNKNOWN]
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]: [UNKNOWN],
732
- [RETURNS]: [UNKNOWN],
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]: [UNKNOWN],
809
- [RETURNS]: [UNKNOWN],
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]: [UNKNOWN],
820
- [RETURNS]: [UNKNOWN],
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]: [UNKNOWN]
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]: [UNKNOWN],
1095
- [RETURNS]: [UNKNOWN],
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]: [UNKNOWN],
1117
- [RETURNS]: [UNKNOWN],
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]: [UNKNOWN]
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
  }