summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-02-20 13:26:47 -0800
committerKaz Kylheku <kaz@kylheku.com>2021-02-20 13:26:47 -0800
commit38ac9d2e58b1ce1881f501c0f82b5830a16cf15d (patch)
tree772735d72d99801477a7639880a92b32f64afc8a
parent0242d633b50ae4883a46cda2bc8edd934cac8672 (diff)
downloadtxr-38ac9d2e58b1ce1881f501c0f82b5830a16cf15d.tar.gz
txr-38ac9d2e58b1ce1881f501c0f82b5830a16cf15d.tar.bz2
txr-38ac9d2e58b1ce1881f501c0f82b5830a16cf15d.zip
compiler: constant-fold more basic functions.
* share/txr/stdlib/compiler.tl (%const-foldable-funs%): Add numerous eligible functions that are registered in eval.c. We avoid anything with functional arguments, environmental dependencies or anything that may be relied upon to produce a fresh object.
-rw-r--r--share/txr/stdlib/compiler.tl18
1 files changed, 17 insertions, 1 deletions
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl
index fb1dfdce..ec7bfa9f 100644
--- a/share/txr/stdlib/compiler.tl
+++ b/share/txr/stdlib/compiler.tl
@@ -274,7 +274,23 @@
caadaar caadadr caaddar caadddr cadaaar cadaadr cadadar cadaddr caddaar
caddadr cadddar caddddr cdaaaar cdaaadr cdaadar cdaaddr cdadaar cdadadr
cdaddar cdadddr cddaaar cddaadr cddadar cddaddr cdddaar cdddadr cddddar
- cdddddr))
+ cdddddr cons sub-list identity typeof atom null false true have
+ consp listp endp proper-listp length-list first second third fourth fifth
+ sixth seventh eighth ninth tenth conses ldiff nthcdr nth tailp
+ memq memql memqual rmemq rmemql rmemqual countq countql countqual
+ posq posql posqual rposq rposql rposqual eq eql equal meq meql mequal
+ neq neql nequal max min clamp bracket take drop uniq if or and progn
+ prog1 prog2 tostring tostringp display-width sys:fmt-simple sys:fmt-flex
+ sys:fmt-join packagep symbolp keywordp bindable stringp length-str
+ coded-length cmp-str string-lt str= str< str> str<= str>= int-str
+ flo-str num-str int-flo flo-int tofloat toint tointz less greater
+ lequal gequal chrp chr-isalnum chr-isalnum chr-isalpha chr-isascii
+ chr-iscntrl chr-isdigit chr-digit chr-isgraph chr-islower chr-isprint
+ chr-ispunct chr-isspace chr-isblank chr-isunisp chr-isupper chr-isxdigit
+ chr-xdigit chr-toupper chr-tolower num-chr int-chr chr-num chr-int
+ chr-str span-str compl-span-str break-str vectorp length-vec size-vec
+ assq assql assoc rassq rassql rassoc prop memp length len ref rangep
+ from to in-range in-range* nullify))
(defvarl %const-foldable% (hash-list %const-foldable-funs% :eq-based))