fez-lisp 1.5.109 → 1.5.111

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/types.js CHANGED
@@ -20,16 +20,24 @@ export const SIGNATURE = 'name'
20
20
  export const UNKNOWN = -1
21
21
  export const COLLECTION = 3
22
22
  export const PREDICATE = 5
23
+ export const NUMBER = 6
23
24
  export const ANY = 4
24
25
  export const ANONYMOUS_FUNCTION_TYPE_PREFIX = 'lambda::annonymous::'
25
26
  export const MAX_ARGUMENT_RETRY = 1
26
27
  export const MAX_RETRY_DEFINITION = 100
27
28
  export const NIL = 'nil'
29
+ export const TRUE_WORD = 'true'
30
+ export const FALSE_WORD = 'false'
31
+ export const BOOLEAN_SUBTYPE = () => new Set([PREDICATE])
32
+
28
33
  export const toTypeNames = (type) => {
29
34
  switch (type) {
30
35
  case APPLY:
31
36
  return 'Abstraction'
32
37
  case PREDICATE:
38
+ return 'Boolean'
39
+ case NUMBER:
40
+ return 'Number'
33
41
  case ATOM:
34
42
  return 'Atom'
35
43
  case UNKNOWN:
@@ -110,13 +118,12 @@ export const SPECIAL_FORM_TYPES = {
110
118
  [SIGNATURE]: PLACEHOLDER,
111
119
  [TYPE_PROP]: [UNKNOWN],
112
120
  [RETURNS]: [UNKNOWN],
113
-
114
121
  [ARGUMENTS]: [],
115
122
  [ARG_COUNT]: 0
116
123
  }
117
124
  }
118
125
  ],
119
- [RETURNS]: [ATOM]
126
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
120
127
  }
121
128
  },
122
129
  [STATIC_TYPES.COLLECTION]: {
@@ -836,7 +843,7 @@ export const SPECIAL_FORM_TYPES = {
836
843
  [STATS]: {
837
844
  retried: 0,
838
845
  [SIGNATURE]: PLACEHOLDER,
839
- [TYPE_PROP]: [ATOM],
846
+ [TYPE_PROP]: [ATOM, BOOLEAN_SUBTYPE()],
840
847
  [RETURNS]: [ATOM],
841
848
 
842
849
  [ARGUMENTS]: [],
@@ -849,7 +856,6 @@ export const SPECIAL_FORM_TYPES = {
849
856
  [SIGNATURE]: PLACEHOLDER,
850
857
  [TYPE_PROP]: [ANY],
851
858
  [RETURNS]: [ANY],
852
-
853
859
  [ARGUMENTS]: [],
854
860
  [ARG_COUNT]: 0
855
861
  }
@@ -860,7 +866,6 @@ export const SPECIAL_FORM_TYPES = {
860
866
  [SIGNATURE]: PLACEHOLDER,
861
867
  [TYPE_PROP]: [ANY],
862
868
  [RETURNS]: [ANY],
863
-
864
869
  [ARGUMENTS]: [],
865
870
  [ARG_COUNT]: 0
866
871
  }
@@ -880,15 +885,14 @@ export const SPECIAL_FORM_TYPES = {
880
885
  [STATS]: {
881
886
  retried: Infinity,
882
887
  [SIGNATURE]: PLACEHOLDER,
883
- [TYPE_PROP]: [ATOM],
884
- [RETURNS]: [ATOM],
885
-
888
+ [TYPE_PROP]: [ATOM, BOOLEAN_SUBTYPE()],
889
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()],
886
890
  [ARGUMENTS]: [],
887
891
  [ARG_COUNT]: 0
888
892
  }
889
893
  }
890
894
  ],
891
- [RETURNS]: [ATOM]
895
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
892
896
  }
893
897
  },
894
898
  [KEYWORDS.EQUAL]: {
@@ -904,7 +908,6 @@ export const SPECIAL_FORM_TYPES = {
904
908
  [SIGNATURE]: PLACEHOLDER,
905
909
  [TYPE_PROP]: [ATOM],
906
910
  [RETURNS]: [ATOM],
907
-
908
911
  [ARGUMENTS]: [],
909
912
  [ARG_COUNT]: 0
910
913
  }
@@ -915,13 +918,12 @@ export const SPECIAL_FORM_TYPES = {
915
918
  [SIGNATURE]: PLACEHOLDER,
916
919
  [TYPE_PROP]: [ATOM],
917
920
  [RETURNS]: [ATOM],
918
-
919
921
  [ARGUMENTS]: [],
920
922
  [ARG_COUNT]: 0
921
923
  }
922
924
  }
923
925
  ],
924
- [RETURNS]: [ATOM]
926
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
925
927
  }
926
928
  },
927
929
  [KEYWORDS.LESS_THAN]: {
@@ -937,7 +939,6 @@ export const SPECIAL_FORM_TYPES = {
937
939
  [SIGNATURE]: PLACEHOLDER,
938
940
  [TYPE_PROP]: [ATOM],
939
941
  [RETURNS]: [ATOM],
940
-
941
942
  [ARGUMENTS]: [],
942
943
  [ARG_COUNT]: 0
943
944
  }
@@ -948,13 +949,12 @@ export const SPECIAL_FORM_TYPES = {
948
949
  [SIGNATURE]: PLACEHOLDER,
949
950
  [TYPE_PROP]: [ATOM],
950
951
  [RETURNS]: [ATOM],
951
-
952
952
  [ARGUMENTS]: [],
953
953
  [ARG_COUNT]: 0
954
954
  }
955
955
  }
956
956
  ],
957
- [RETURNS]: [ATOM]
957
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
958
958
  }
959
959
  },
960
960
  [KEYWORDS.GREATHER_THAN]: {
@@ -981,13 +981,12 @@ export const SPECIAL_FORM_TYPES = {
981
981
  [SIGNATURE]: PLACEHOLDER,
982
982
  [TYPE_PROP]: [ATOM],
983
983
  [RETURNS]: [ATOM],
984
-
985
984
  [ARGUMENTS]: [],
986
985
  [ARG_COUNT]: 0
987
986
  }
988
987
  }
989
988
  ],
990
- [RETURNS]: [ATOM]
989
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
991
990
  }
992
991
  },
993
992
  [KEYWORDS.GREATHER_THAN_OR_EQUAL]: {
@@ -1003,7 +1002,6 @@ export const SPECIAL_FORM_TYPES = {
1003
1002
  [SIGNATURE]: PLACEHOLDER,
1004
1003
  [TYPE_PROP]: [ATOM],
1005
1004
  [RETURNS]: [ATOM],
1006
-
1007
1005
  [ARGUMENTS]: [],
1008
1006
  [ARG_COUNT]: 0
1009
1007
  }
@@ -1014,13 +1012,12 @@ export const SPECIAL_FORM_TYPES = {
1014
1012
  [SIGNATURE]: PLACEHOLDER,
1015
1013
  [TYPE_PROP]: [ATOM],
1016
1014
  [RETURNS]: [ATOM],
1017
-
1018
1015
  [ARGUMENTS]: [],
1019
1016
  [ARG_COUNT]: 0
1020
1017
  }
1021
1018
  }
1022
1019
  ],
1023
- [RETURNS]: [ATOM]
1020
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
1024
1021
  }
1025
1022
  },
1026
1023
  [KEYWORDS.LESS_THAN_OR_EQUAL]: {
@@ -1036,7 +1033,6 @@ export const SPECIAL_FORM_TYPES = {
1036
1033
  [SIGNATURE]: PLACEHOLDER,
1037
1034
  [TYPE_PROP]: [ATOM],
1038
1035
  [RETURNS]: [ATOM],
1039
-
1040
1036
  [ARGUMENTS]: [],
1041
1037
  [ARG_COUNT]: 0
1042
1038
  }
@@ -1047,13 +1043,12 @@ export const SPECIAL_FORM_TYPES = {
1047
1043
  [SIGNATURE]: PLACEHOLDER,
1048
1044
  [TYPE_PROP]: [ATOM],
1049
1045
  [RETURNS]: [ATOM],
1050
-
1051
1046
  [ARGUMENTS]: [],
1052
1047
  [ARG_COUNT]: 0
1053
1048
  }
1054
1049
  }
1055
1050
  ],
1056
- [RETURNS]: [ATOM]
1051
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
1057
1052
  }
1058
1053
  },
1059
1054
  [KEYWORDS.AND]: {
@@ -1067,9 +1062,8 @@ export const SPECIAL_FORM_TYPES = {
1067
1062
  [STATS]: {
1068
1063
  retried: Infinity,
1069
1064
  [SIGNATURE]: PLACEHOLDER,
1070
- [TYPE_PROP]: [ATOM],
1071
- [RETURNS]: [ATOM],
1072
-
1065
+ [TYPE_PROP]: [ATOM, BOOLEAN_SUBTYPE()],
1066
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()],
1073
1067
  [ARGUMENTS]: [],
1074
1068
  [ARG_COUNT]: 0
1075
1069
  }
@@ -1078,15 +1072,14 @@ export const SPECIAL_FORM_TYPES = {
1078
1072
  [STATS]: {
1079
1073
  retried: Infinity,
1080
1074
  [SIGNATURE]: PLACEHOLDER,
1081
- [TYPE_PROP]: [ATOM],
1082
- [RETURNS]: [ATOM],
1083
-
1075
+ [TYPE_PROP]: [ATOM, BOOLEAN_SUBTYPE()],
1076
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()],
1084
1077
  [ARGUMENTS]: [],
1085
1078
  [ARG_COUNT]: 0
1086
1079
  }
1087
1080
  }
1088
1081
  ],
1089
- [RETURNS]: [ATOM]
1082
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
1090
1083
  }
1091
1084
  },
1092
1085
  [KEYWORDS.OR]: {
@@ -1100,9 +1093,8 @@ export const SPECIAL_FORM_TYPES = {
1100
1093
  [STATS]: {
1101
1094
  retried: Infinity,
1102
1095
  [SIGNATURE]: PLACEHOLDER,
1103
- [TYPE_PROP]: [ATOM],
1104
- [RETURNS]: [ATOM],
1105
-
1096
+ [TYPE_PROP]: [ATOM, BOOLEAN_SUBTYPE()],
1097
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()],
1106
1098
  [ARGUMENTS]: [],
1107
1099
  [ARG_COUNT]: 0
1108
1100
  }
@@ -1111,15 +1103,14 @@ export const SPECIAL_FORM_TYPES = {
1111
1103
  [STATS]: {
1112
1104
  retried: Infinity,
1113
1105
  [SIGNATURE]: PLACEHOLDER,
1114
- [TYPE_PROP]: [ATOM],
1115
- [RETURNS]: [ATOM],
1116
-
1106
+ [TYPE_PROP]: [ATOM, BOOLEAN_SUBTYPE()],
1107
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()],
1117
1108
  [ARGUMENTS]: [],
1118
1109
  [ARG_COUNT]: 0
1119
1110
  }
1120
1111
  }
1121
1112
  ],
1122
- [RETURNS]: [ATOM]
1113
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
1123
1114
  }
1124
1115
  },
1125
1116
  [KEYWORDS.IS_ATOM]: {
@@ -1141,7 +1132,7 @@ export const SPECIAL_FORM_TYPES = {
1141
1132
  }
1142
1133
  }
1143
1134
  ],
1144
- [RETURNS]: [ATOM]
1135
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
1145
1136
  }
1146
1137
  },
1147
1138
  [KEYWORDS.IS_LAMBDA]: {
@@ -1163,7 +1154,7 @@ export const SPECIAL_FORM_TYPES = {
1163
1154
  }
1164
1155
  }
1165
1156
  ],
1166
- [RETURNS]: [ATOM]
1157
+ [RETURNS]: [ATOM, BOOLEAN_SUBTYPE()]
1167
1158
  }
1168
1159
  },
1169
1160
  [KEYWORDS.ERROR]: {
@@ -1190,7 +1181,7 @@ export const SPECIAL_FORM_TYPES = {
1190
1181
  }
1191
1182
  }
1192
1183
 
1193
- const formatSubType = (T) => {
1184
+ export const formatSubType = (T) => {
1194
1185
  switch (T[0]) {
1195
1186
  case COLLECTION:
1196
1187
  return `[${
@@ -1202,6 +1193,12 @@ const formatSubType = (T) => {
1202
1193
  .join(' ')
1203
1194
  : toTypeNames(ANY)
1204
1195
  }]`
1196
+ case ATOM:
1197
+ return `${
1198
+ T[1] instanceof Set
1199
+ ? [...T[1]].map((x) => toTypeNames(x)).join(' ')
1200
+ : toTypeNames(NUMBER)
1201
+ }`
1205
1202
  default:
1206
1203
  return toTypeNames(T[0])
1207
1204
  }