Hi all, I'm trying to make a python clone in guile. Currently the code is
slow and one of  the reasons is the following,

in my pythoon

return 1,2

returns a (values 1 2) in order to get python and scheme to interoperate.
but for python if you use

x = 1,2

then x is the tupple '(1 2) and in guile it is 1. So therefore we wrap the
result for

x=f(10)

as
(set! x (call-with-values (lambda () (f x)) (case-lambda ((x) x) (x x))))

This can be compiled to efficient bytecode but is not done so in guile. In
stead a closure is created at each assignment site and creating ineficient
code.

Any ideas how to improve this (I don't want "return a,b" to mean (list a b)
which is a quick solution
if we want to just stay in python and not interoperate with scheme at all
on this level.

Regards
Stefan

Reply via email to