Skip to content

Commit a2aa728

Browse files
committed
simple type tests
1 parent 64b1b0d commit a2aa728

File tree

4 files changed

+51
-23
lines changed

4 files changed

+51
-23
lines changed

dist/index.ems.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3409,7 +3409,7 @@ var coreWords = {
34093409
}
34103410
},
34113411
'pounce': {
3412-
dt: '[[[S+]F][[Fi][Fo]mbr]]',
3412+
dt: '[[[S+]F][F run]]',
34133413
compose: function (s, pl) {
34143414
var words = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
34153415
var argList = toArrOfStrOrNull(s === null || s === void 0 ? void 0 : s.pop());
@@ -3663,6 +3663,7 @@ var coreWords = {
36633663
}
36643664
},
36653665
'concat': {
3666+
dt: '[[[A*] [C*]][[A* C*]] bind]',
36663667
compose: function (s) {
36673668
var b = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
36683669
var a = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
@@ -3673,6 +3674,7 @@ var coreWords = {
36733674
}
36743675
},
36753676
'cons': {
3677+
dt: '[[A [C*]][[A C*]] bind]',
36763678
compose: function (s) {
36773679
var b = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
36783680
var a = s === null || s === void 0 ? void 0 : s.pop();
@@ -3683,6 +3685,7 @@ var coreWords = {
36833685
}
36843686
},
36853687
'uncons': {
3688+
dt: '[[[A+]][Af [Ar]] bind]',
36863689
compose: function (s) {
36873690
var arr = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
36883691
if (arr) {
@@ -3692,6 +3695,7 @@ var coreWords = {
36923695
}
36933696
},
36943697
'push': {
3698+
dt: '[[[A*] C][[A C]] bind]',
36953699
compose: function (s) {
36963700
var item = s === null || s === void 0 ? void 0 : s.pop();
36973701
var arr = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
@@ -3702,6 +3706,7 @@ var coreWords = {
37023706
}
37033707
},
37043708
'pop': {
3709+
dt: '[[[A+]][[Ab] Al] bind]',
37053710
compose: function (s) {
37063711
var arr = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
37073712
if (arr) {
@@ -3711,7 +3716,7 @@ var coreWords = {
37113716
}
37123717
},
37133718
'constrec': {
3714-
dt: '[] []',
3719+
dt: '[[F][G][H][I][J]] [J run H run F run...]',
37153720
// { type: 'initial extends (list<words>)' },
37163721
// { type: 'increment extends (list<words>)' },
37173722
// { type: 'condition extends (list<words>)' },
@@ -3729,21 +3734,26 @@ var coreWords = {
37293734
var nextRec = [[], increment, condition, recurse, final, 'constrec'];
37303735
pl = __spreadArrays(initial, increment, condition, [__spreadArrays(recurse, nextRec), final, 'if-else']).concat(pl);
37313736
}
3737+
else {
3738+
console.error("some stack value(s) not found");
3739+
// throw new Error("stack value(s) not found");
3740+
}
37323741
return [s, pl];
37333742
}
37343743
},
37353744
'linrec': {
3745+
dt: '[[F][G][H][I]] [I run H [G run I H G F linrec F run] if-else]',
37363746
// { type: 'termTest extends (list<words>)' },
37373747
// { type: 'terminal extends (list<words>)' },
37383748
// { type: 'recurse extends (list<words>)' },
37393749
// { type: 'final extends (list<words>)' }
37403750
// ], []],
37413751
compose: function (s, pl) {
37423752
// termtest && terminal && recurse && final linrec
3743-
var final = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
3744-
var recurse = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
3745-
var terminal = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
3746-
var termtest = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
3753+
var final = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop()); // F
3754+
var recurse = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop()); // G
3755+
var terminal = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop()); // H
3756+
var termtest = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop()); // I
37473757
if (termtest && terminal && recurse && final) {
37483758
var nextRec = __spreadArrays([termtest, terminal, recurse, final, 'linrec'], final);
37493759
pl = __spreadArrays(termtest, [terminal, __spreadArrays(recurse, nextRec), 'if-else']).concat(pl);
@@ -3757,6 +3767,7 @@ var coreWords = {
37573767
}
37583768
},
37593769
'linrec5': {
3770+
dt: '[[F][G][H][I][J]] [J run H run F run...]',
37603771
// { type: 'init extends (list<words>)' },
37613772
// { type: 'termTest extends (list<words>)' },
37623773
// { type: 'terminal extends (list<words>)' },

dist/index.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3415,7 +3415,7 @@ var coreWords = {
34153415
}
34163416
},
34173417
'pounce': {
3418-
dt: '[[[S+]F][[Fi][Fo]mbr]]',
3418+
dt: '[[[S+]F][F run]]',
34193419
compose: function (s, pl) {
34203420
var words = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
34213421
var argList = toArrOfStrOrNull(s === null || s === void 0 ? void 0 : s.pop());
@@ -3669,6 +3669,7 @@ var coreWords = {
36693669
}
36703670
},
36713671
'concat': {
3672+
dt: '[[[A*] [C*]][[A* C*]] bind]',
36723673
compose: function (s) {
36733674
var b = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
36743675
var a = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
@@ -3679,6 +3680,7 @@ var coreWords = {
36793680
}
36803681
},
36813682
'cons': {
3683+
dt: '[[A [C*]][[A C*]] bind]',
36823684
compose: function (s) {
36833685
var b = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
36843686
var a = s === null || s === void 0 ? void 0 : s.pop();
@@ -3689,6 +3691,7 @@ var coreWords = {
36893691
}
36903692
},
36913693
'uncons': {
3694+
dt: '[[[A+]][Af [Ar]] bind]',
36923695
compose: function (s) {
36933696
var arr = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
36943697
if (arr) {
@@ -3698,6 +3701,7 @@ var coreWords = {
36983701
}
36993702
},
37003703
'push': {
3704+
dt: '[[[A*] C][[A C]] bind]',
37013705
compose: function (s) {
37023706
var item = s === null || s === void 0 ? void 0 : s.pop();
37033707
var arr = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
@@ -3708,6 +3712,7 @@ var coreWords = {
37083712
}
37093713
},
37103714
'pop': {
3715+
dt: '[[[A+]][[Ab] Al] bind]',
37113716
compose: function (s) {
37123717
var arr = toArrOrNull(s === null || s === void 0 ? void 0 : s.pop());
37133718
if (arr) {
@@ -3717,7 +3722,7 @@ var coreWords = {
37173722
}
37183723
},
37193724
'constrec': {
3720-
dt: '[] []',
3725+
dt: '[[F][G][H][I][J]] [J run H run F run...]',
37213726
// { type: 'initial extends (list<words>)' },
37223727
// { type: 'increment extends (list<words>)' },
37233728
// { type: 'condition extends (list<words>)' },
@@ -3735,21 +3740,26 @@ var coreWords = {
37353740
var nextRec = [[], increment, condition, recurse, final, 'constrec'];
37363741
pl = __spreadArrays(initial, increment, condition, [__spreadArrays(recurse, nextRec), final, 'if-else']).concat(pl);
37373742
}
3743+
else {
3744+
console.error("some stack value(s) not found");
3745+
// throw new Error("stack value(s) not found");
3746+
}
37383747
return [s, pl];
37393748
}
37403749
},
37413750
'linrec': {
3751+
dt: '[[F][G][H][I]] [I run H [G run I H G F linrec F run] if-else]',
37423752
// { type: 'termTest extends (list<words>)' },
37433753
// { type: 'terminal extends (list<words>)' },
37443754
// { type: 'recurse extends (list<words>)' },
37453755
// { type: 'final extends (list<words>)' }
37463756
// ], []],
37473757
compose: function (s, pl) {
37483758
// termtest && terminal && recurse && final linrec
3749-
var final = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
3750-
var recurse = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
3751-
var terminal = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
3752-
var termtest = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop());
3759+
var final = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop()); // F
3760+
var recurse = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop()); // G
3761+
var terminal = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop()); // H
3762+
var termtest = toPLOrNull(s === null || s === void 0 ? void 0 : s.pop()); // I
37533763
if (termtest && terminal && recurse && final) {
37543764
var nextRec = __spreadArrays([termtest, terminal, recurse, final, 'linrec'], final);
37553765
pl = __spreadArrays(termtest, [terminal, __spreadArrays(recurse, nextRec), 'if-else']).concat(pl);
@@ -3763,6 +3773,7 @@ var coreWords = {
37633773
}
37643774
},
37653775
'linrec5': {
3776+
dt: '[[F][G][H][I][J]] [J run H run F run...]',
37663777
// { type: 'init extends (list<words>)' },
37673778
// { type: 'termTest extends (list<words>)' },
37683779
// { type: 'terminal extends (list<words>)' },

src/words/core.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,7 @@ export const coreWords: WordDictionary = {
776776
}
777777
},
778778
'pounce': {
779-
dt: '[[[S+]F][[Fi][Fo]mbr]]',
779+
dt: '[[[S+]F][F run]]',
780780
compose: (s, pl) => {
781781
const words = toPLOrNull(s?.pop());
782782
const argList = toArrOfStrOrNull(s?.pop());
@@ -1036,6 +1036,7 @@ export const coreWords: WordDictionary = {
10361036
}
10371037
},
10381038
'concat': {
1039+
dt: '[[[A*] [C*]][[A* C*]] bind]',
10391040
compose: s => {
10401041
const b = toArrOrNull(s?.pop());
10411042
const a = toArrOrNull(s?.pop());
@@ -1046,6 +1047,7 @@ export const coreWords: WordDictionary = {
10461047
}
10471048
},
10481049
'cons': {
1050+
dt: '[[A [C*]][[A C*]] bind]',
10491051
compose: s => {
10501052
const b = toArrOrNull(s?.pop());
10511053
const a = s?.pop();
@@ -1056,6 +1058,7 @@ export const coreWords: WordDictionary = {
10561058
}
10571059
},
10581060
'uncons': {
1061+
dt: '[[[A+]][Af [Ar]] bind]',
10591062
compose: s => {
10601063
const arr = toArrOrNull(s?.pop());
10611064
if (arr) {
@@ -1065,6 +1068,7 @@ export const coreWords: WordDictionary = {
10651068
}
10661069
},
10671070
'push': {
1071+
dt: '[[[A*] C][[A C]] bind]',
10681072
compose: s => {
10691073
const item = s?.pop();
10701074
const arr = toArrOrNull(s?.pop());
@@ -1075,6 +1079,7 @@ export const coreWords: WordDictionary = {
10751079
}
10761080
},
10771081
'pop': {
1082+
dt: '[[[A+]][[Ab] Al] bind]',
10781083
compose: s => {
10791084
const arr = toArrOrNull(s?.pop());
10801085
if (arr) {
@@ -1084,7 +1089,7 @@ export const coreWords: WordDictionary = {
10841089
}
10851090
},
10861091
'constrec': {
1087-
dt: '[] []',
1092+
dt: '[[F][G][H][I][J]] [J run H run F run...]',
10881093
// { type: 'initial extends (list<words>)' },
10891094
// { type: 'increment extends (list<words>)' },
10901095
// { type: 'condition extends (list<words>)' },
@@ -1103,24 +1108,25 @@ export const coreWords: WordDictionary = {
11031108
pl = [...initial, ...increment, ...condition, [...recurse, ...nextRec], final, 'if-else'].concat(pl);
11041109
}
11051110
else {
1111+
console.error("some stack value(s) not found");
11061112
// throw new Error("stack value(s) not found");
11071113
}
11081114
return [s, pl];
11091115
}
11101116
},
11111117
'linrec': {
1112-
1118+
dt: '[[F][G][H][I]] [I run H [G run I H G F linrec F run] if-else]',
11131119
// { type: 'termTest extends (list<words>)' },
11141120
// { type: 'terminal extends (list<words>)' },
11151121
// { type: 'recurse extends (list<words>)' },
11161122
// { type: 'final extends (list<words>)' }
11171123
// ], []],
11181124
compose: (s, pl) => {
11191125
// termtest && terminal && recurse && final linrec
1120-
const final = toPLOrNull(s?.pop());
1121-
const recurse = toPLOrNull(s?.pop());
1122-
const terminal = toPLOrNull(s?.pop());
1123-
const termtest = toPLOrNull(s?.pop());
1126+
const final = toPLOrNull(s?.pop()); // F
1127+
const recurse = toPLOrNull(s?.pop()); // G
1128+
const terminal = toPLOrNull(s?.pop()); // H
1129+
const termtest = toPLOrNull(s?.pop()); // I
11241130
if (termtest && terminal && recurse && final) {
11251131
const nextRec = [termtest, terminal, recurse, final, 'linrec', ...final];
11261132
pl = [...termtest, terminal, [...recurse, ...nextRec], 'if-else'].concat(pl);
@@ -1134,7 +1140,7 @@ export const coreWords: WordDictionary = {
11341140
}
11351141
},
11361142
'linrec5': {
1137-
1143+
dt: '[[F][G][H][I][J]] [J run H run F run...]',
11381144
// { type: 'init extends (list<words>)' },
11391145
// { type: 'termTest extends (list<words>)' },
11401146
// { type: 'terminal extends (list<words>)' },

tests/dt_test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ let tests = [
8383
['4 3 [[8 +] dip 5 -] play', 'N N [[N [N N] [N] comp] [A F] [F run A] bind N [N N] [N] comp] [F] [F run] bind', 'N N'],
8484

8585
['4 3 true [1 +] [[8 +] dip 5 -] if-else', 'N N B [N [N N] [N] comp] [[N [N N] [N] comp] [A F] [F run A] bind N [N N] [N] comp] [B F F] [F run] bind', 'N N'],
86-
// // ['3 a ==', ["'==' type check error: stack elements types do not match",["S"],["N"]]],
87-
// // ['3 a =', ["'=' type check error: stack elements types do not match",["S"],["N"]]],
88-
// // ['0 1 [dup2 +] 5 times', [["*N"]]],
86+
['3 a ==', 'N S [N N] [B] comp', 'Error'],
87+
['3 a =', 'N S [N N] [N B] comp', 'Error'],
88+
['0 1 [dup2 +] 5 times', 'N N [[C D] [C D C D] bind [N N] [N] comp] N F N', 'N N [[C D] [C D C D] bind [N N] [N] comp] N F N'],
8989
// // // ['6 [3 8 5 7 10 2 9 1] [>] split', [["*N"],["*N"]]],
9090
];
9191

0 commit comments

Comments
 (0)