From 38ac9d2e58b1ce1881f501c0f82b5830a16cf15d Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 20 Feb 2021 13:26:47 -0800 Subject: 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. --- share/txr/stdlib/compiler.tl | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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)) -- cgit v1.2.3