summaryrefslogtreecommitdiffstats
path: root/lisplib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-04-15 13:58:46 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-04-15 13:58:46 -0700
commitfc7a6a883b663ea58edf8b190d210f11e91d4552 (patch)
treed67b4ff82a0961e0397f39051b19b8717af0d734 /lisplib.c
parent1b86c3b4edd40f7b97c9e2f2af2554fcc098d30d (diff)
downloadtxr-fc7a6a883b663ea58edf8b190d210f11e91d4552.tar.gz
txr-fc7a6a883b663ea58edf8b190d210f11e91d4552.tar.bz2
txr-fc7a6a883b663ea58edf8b190d210f11e91d4552.zip
compiler: lambda call to let optimization.
Normalize ((lambda ...) args) to (call (lambda ...) args). Reduce (apply (lambda ...) args) and (call (lambda ...) args) to let (let (vars-inited-from-args ...) ...). * lisplib.c (error_set_entries): Autoload for new error functions lambda-too-many-args, lambda-too-few-args, lambda-short-apply-list. * share/txr/stdlib/compiler.tl (comp-fun-form): Restructure to recognize lambda and handle via comp-inline-lambda. (compiler comp-inline-lambda): New method. (lambda-apply-transform): New function. * share/txr/stdlib/error.tl (lambda-too-many-args, lambda-too-few-args, lambda-short-apply-list): New functions.
Diffstat (limited to 'lisplib.c')
-rw-r--r--lisplib.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/lisplib.c b/lisplib.c
index ce59dd1d..a486abe1 100644
--- a/lisplib.c
+++ b/lisplib.c
@@ -544,7 +544,8 @@ static val pmac_instantiate(val set_fun)
static val error_set_entries(val dlt, val fun)
{
val sys_name[] = {
- lit("bind-mac-error"),
+ lit("bind-mac-error"), lit("lambda-too-many-args"),
+ lit("lambda-too-few-args"), lit("lambda-short-apply-list"),
nil
};
val name[] = {