I have this (on guile 3.0.0),

(define (f x) (call-with-values (lambda () x) (case-lambda ((x) ...) (x
...)))))

and the code does not simplify to (define (f x) x), why?

It would be great to have guile optimize this as in python we have

x=1,0
=> x=(1,0)

And the great thing with python on guile is that we get the same behavior
with (values 1 0) as a r.h.s. so that we get good interoperability between
guile and python.

This is implemented as

(call-with-values (lambda () r.h.s.)
   (case-lambda
      ((x) x)
      (x   x)))

This has nice semantics but is expensive. Many times we can prove that
r.h.s. has a single value return and we would like to be speed optimal for
this case. I do not think that the python compiler should do this analysis
or what do you think?

Reply via email to