diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-04-15 13:58:46 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-04-15 13:58:46 -0700 |
commit | fc7a6a883b663ea58edf8b190d210f11e91d4552 (patch) | |
tree | d67b4ff82a0961e0397f39051b19b8717af0d734 /lisplib.c | |
parent | 1b86c3b4edd40f7b97c9e2f2af2554fcc098d30d (diff) | |
download | txr-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.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -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[] = { |