bug#61660: [feature request] optimization of case-lambda
lloda <[email protected]>
| Newsgroups | gmane.lisp.guile.bugs |
|---|---|
| Message-ID | <[email protected]> |
> On 27 Feb 2023, at 11:11, Ludovic Courtès <[email protected]> wrote: > > Hi Daniel, > > lloda <[email protected]> skribis: > >> From 61ed612fb36108e395bdee4b1bbb46b49ef017b3 Mon Sep 17 00:00:00 2001 >> From: Daniel Llorens <[email protected]> >> Date: Thu, 23 Feb 2023 17:38:10 +0100 >> Subject: [PATCH] peval reduces some inlined case-lambda calls >> >> * module/language/tree-il/peval.scm (peval): Reduce multiple case lambda >> in <call> trees according to the number of arguments. Do not try to >> reduce case-lambda using keyword arguments. >> * test-suite/tests/peval.test: Tests. > > [...] > >> +++ b/module/language/tree-il/peval.scm >> @@ -1668,6 +1668,29 @@ top-level bindings from ENV and return the resulting expression." >> >> (log 'inline-end result exp) >> result))))) >> + (($ <lambda> src-proc meta orig-body) >> + ;; If there are multiple cases and one matches nargs, omit all the others. >> + (or (and >> + (lambda-case-alternate orig-body) >> + (let ((nargs (length orig-args))) >> + (let loop ((body orig-body)) >> + (match body >> + (#f #f) ;; No matching case; an error. >> + (($ <lambda-case> src-case req opt rest kw inits gensyms case-body alt) >> + (cond (kw >> + ;; FIXME: Not handling keyword cases. >> + #f) > > Maybe s/FIXME/XXX/ since it’s at most a limitation, certainly not a bug. > > It LGTM and Andy already approved it on IRC, so go ahead! > > Ludo’. Apologies for not seeing this earlier. Pushed to 3b47f87618047ebb8812788c64a44877a4f2e0dd. Thanks! - Daniel