fez-lisp 1.5.51 → 1.5.53
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 +4 -4
- package/index.js +1 -1
- package/lib/baked/std.js +1 -1
- package/package.json +1 -1
- package/src/check.js +915 -185
- package/src/keywords.js +2 -1
- package/src/macros.js +95 -85
package/src/keywords.js
CHANGED
package/src/macros.js
CHANGED
@@ -11,6 +11,7 @@ import {
|
|
11
11
|
KEYWORDS,
|
12
12
|
PLACEHOLDER,
|
13
13
|
PREDICATE_SUFFIX,
|
14
|
+
STATIC_TYPES,
|
14
15
|
TRUE,
|
15
16
|
TYPE,
|
16
17
|
VALUE,
|
@@ -529,7 +530,7 @@ export const deSuggarAst = (ast, scope) => {
|
|
529
530
|
)
|
530
531
|
}
|
531
532
|
const args = last.slice(1, -1)
|
532
|
-
const newName = `${OPTIMIZED_PREFIX}
|
533
|
+
const newName = `${OPTIMIZED_PREFIX}${name}::*${performance
|
533
534
|
.now()
|
534
535
|
.toString()
|
535
536
|
.replace('.', 0)}*`
|
@@ -549,76 +550,79 @@ export const deSuggarAst = (ast, scope) => {
|
|
549
550
|
)
|
550
551
|
|
551
552
|
exp[exp.length - 1] = [
|
552
|
-
[APPLY,
|
553
|
+
[APPLY, STATIC_TYPES.UNKNOWN],
|
553
554
|
[
|
554
|
-
[APPLY, KEYWORDS.
|
555
|
+
[APPLY, KEYWORDS.CALL_FUNCTION],
|
555
556
|
[
|
556
|
-
[APPLY, KEYWORDS.
|
557
|
+
[APPLY, KEYWORDS.ANONYMOUS_FUNCTION],
|
557
558
|
[
|
558
|
-
[APPLY, KEYWORDS.
|
559
|
-
[
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
[
|
575
|
-
[WORD, '*fn*'],
|
559
|
+
[APPLY, KEYWORDS.BLOCK],
|
560
|
+
[
|
561
|
+
[APPLY, KEYWORDS.DEFINE_VARIABLE],
|
562
|
+
[WORD, newName],
|
563
|
+
last
|
564
|
+
],
|
565
|
+
args.length < 5
|
566
|
+
? [
|
567
|
+
[
|
568
|
+
APPLY,
|
569
|
+
`optimization:tail-calls-${args.length}`
|
570
|
+
],
|
571
|
+
[WORD, newName]
|
572
|
+
]
|
573
|
+
: [
|
574
|
+
[APPLY, KEYWORDS.CALL_FUNCTION],
|
575
|
+
[WORD, newName],
|
576
576
|
[
|
577
577
|
[APPLY, KEYWORDS.ANONYMOUS_FUNCTION],
|
578
|
-
|
578
|
+
[WORD, '*fn*'],
|
579
579
|
[
|
580
|
-
[APPLY, KEYWORDS.
|
581
|
-
|
582
|
-
[APPLY, KEYWORDS.DEFINE_VARIABLE],
|
583
|
-
[WORD, '*res*'],
|
584
|
-
[
|
585
|
-
[APPLY, KEYWORDS.CREATE_ARRAY],
|
586
|
-
[[APPLY, '*fn*'], ...args]
|
587
|
-
]
|
588
|
-
],
|
580
|
+
[APPLY, KEYWORDS.ANONYMOUS_FUNCTION],
|
581
|
+
...args,
|
589
582
|
[
|
590
|
-
[APPLY, KEYWORDS.
|
583
|
+
[APPLY, KEYWORDS.BLOCK],
|
591
584
|
[
|
592
|
-
[APPLY, KEYWORDS.
|
585
|
+
[APPLY, KEYWORDS.DEFINE_VARIABLE],
|
586
|
+
[WORD, '*res*'],
|
593
587
|
[
|
594
|
-
[APPLY, KEYWORDS.
|
595
|
-
[
|
596
|
-
[ATOM, 0]
|
588
|
+
[APPLY, KEYWORDS.CREATE_ARRAY],
|
589
|
+
[[APPLY, '*fn*'], ...args]
|
597
590
|
]
|
598
591
|
],
|
599
592
|
[
|
600
|
-
[APPLY, KEYWORDS.
|
601
|
-
[WORD, '*res*'],
|
602
|
-
[ATOM, 0],
|
593
|
+
[APPLY, KEYWORDS.LOOP],
|
603
594
|
[
|
604
|
-
[APPLY, KEYWORDS.
|
595
|
+
[APPLY, KEYWORDS.IS_LAMBDA],
|
605
596
|
[
|
606
597
|
[APPLY, KEYWORDS.GET_ARRAY],
|
607
598
|
[WORD, '*res*'],
|
608
599
|
[ATOM, 0]
|
609
600
|
]
|
601
|
+
],
|
602
|
+
[
|
603
|
+
[APPLY, KEYWORDS.SET_ARRAY],
|
604
|
+
[WORD, '*res*'],
|
605
|
+
[ATOM, 0],
|
606
|
+
[
|
607
|
+
[APPLY, KEYWORDS.CALL_FUNCTION],
|
608
|
+
[
|
609
|
+
[APPLY, KEYWORDS.GET_ARRAY],
|
610
|
+
[WORD, '*res*'],
|
611
|
+
[ATOM, 0]
|
612
|
+
]
|
613
|
+
]
|
610
614
|
]
|
615
|
+
],
|
616
|
+
[
|
617
|
+
[APPLY, KEYWORDS.GET_ARRAY],
|
618
|
+
[WORD, '*res*'],
|
619
|
+
[ATOM, 0]
|
611
620
|
]
|
612
|
-
],
|
613
|
-
[
|
614
|
-
[APPLY, KEYWORDS.GET_ARRAY],
|
615
|
-
[WORD, '*res*'],
|
616
|
-
[ATOM, 0]
|
617
621
|
]
|
618
622
|
]
|
619
623
|
]
|
620
624
|
]
|
621
|
-
|
625
|
+
]
|
622
626
|
]
|
623
627
|
]
|
624
628
|
]
|
@@ -630,7 +634,7 @@ export const deSuggarAst = (ast, scope) => {
|
|
630
634
|
)
|
631
635
|
}
|
632
636
|
const args = last.slice(1, -1)
|
633
|
-
const newName = `${OPTIMIZED_PREFIX}
|
637
|
+
const newName = `${OPTIMIZED_PREFIX}${name}::*${performance
|
634
638
|
.now()
|
635
639
|
.toString()
|
636
640
|
.replace('.', 0)}*`
|
@@ -647,55 +651,61 @@ export const deSuggarAst = (ast, scope) => {
|
|
647
651
|
const keyName = newName + ':key'
|
648
652
|
|
649
653
|
exp[exp.length - 1] = [
|
650
|
-
[APPLY,
|
654
|
+
[APPLY, STATIC_TYPES.UNKNOWN],
|
651
655
|
[
|
652
|
-
[APPLY, KEYWORDS.
|
656
|
+
[APPLY, KEYWORDS.CALL_FUNCTION],
|
653
657
|
[
|
654
|
-
[APPLY, KEYWORDS.
|
655
|
-
[
|
656
|
-
[APPLY, KEYWORDS.DEFINE_VARIABLE],
|
657
|
-
[WORD, memoName],
|
658
|
-
[[APPLY, 'new:map64']]
|
659
|
-
],
|
658
|
+
[APPLY, KEYWORDS.ANONYMOUS_FUNCTION],
|
660
659
|
[
|
661
|
-
[APPLY, KEYWORDS.
|
662
|
-
[
|
660
|
+
[APPLY, KEYWORDS.BLOCK],
|
661
|
+
[
|
662
|
+
[APPLY, KEYWORDS.DEFINE_VARIABLE],
|
663
|
+
[WORD, memoName],
|
664
|
+
[[APPLY, 'new:map64']]
|
665
|
+
],
|
663
666
|
[
|
664
|
-
[APPLY, KEYWORDS.
|
665
|
-
|
667
|
+
[APPLY, KEYWORDS.DEFINE_VARIABLE],
|
668
|
+
[WORD, newName],
|
666
669
|
[
|
667
|
-
[APPLY, KEYWORDS.
|
670
|
+
[APPLY, KEYWORDS.ANONYMOUS_FUNCTION],
|
671
|
+
...args,
|
668
672
|
[
|
669
|
-
[APPLY, KEYWORDS.
|
670
|
-
[WORD, keyName],
|
673
|
+
[APPLY, KEYWORDS.BLOCK],
|
671
674
|
[
|
672
|
-
[APPLY,
|
673
|
-
[
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
[WORD, keyName]
|
682
|
-
],
|
683
|
-
[
|
684
|
-
[APPLY, 'map:get'],
|
685
|
-
[WORD, memoName],
|
686
|
-
[WORD, keyName]
|
675
|
+
[APPLY, KEYWORDS.DEFINE_VARIABLE],
|
676
|
+
[WORD, keyName],
|
677
|
+
[
|
678
|
+
[APPLY, 'from:string-or-number->key'],
|
679
|
+
[
|
680
|
+
[APPLY, KEYWORDS.CREATE_ARRAY],
|
681
|
+
...args
|
682
|
+
]
|
683
|
+
]
|
687
684
|
],
|
688
685
|
[
|
689
|
-
[APPLY,
|
690
|
-
[
|
691
|
-
|
692
|
-
|
686
|
+
[APPLY, KEYWORDS.IF],
|
687
|
+
[
|
688
|
+
[APPLY, 'map:exists?'],
|
689
|
+
[WORD, memoName],
|
690
|
+
[WORD, keyName]
|
691
|
+
],
|
692
|
+
[
|
693
|
+
[APPLY, 'map:get'],
|
694
|
+
[WORD, memoName],
|
695
|
+
[WORD, keyName]
|
696
|
+
],
|
697
|
+
[
|
698
|
+
[APPLY, 'map:set-and-get!'],
|
699
|
+
[WORD, memoName],
|
700
|
+
[WORD, keyName],
|
701
|
+
last.at(-1)
|
702
|
+
]
|
693
703
|
]
|
694
704
|
]
|
695
705
|
]
|
696
|
-
]
|
697
|
-
|
698
|
-
|
706
|
+
],
|
707
|
+
[WORD, newName]
|
708
|
+
]
|
699
709
|
]
|
700
710
|
]
|
701
711
|
]
|