There is a variant on pair-consing that preserves the varargs capability
without breaking BY-REF arguments. As currently, we check arity at apply
time, but we interpret

  (lambda (x y ...) ...)

to mean that the procedure requires exactly two formal parameters, but
that applications may provide an arbitrary number of actual parameters.
The apply-time behavior of 

  (f x y ... z)

is to pair-cons the *trailing* arguments.


There is a potential problem here that

  (f 1 2 3)

cannot be distinguished (in the receiver) by

  (f 1 (pair 2 3))

If this is a problem, we can define the "..." behavior so as to always
append a trailing instance of unit so that the parameter in varargs
position is always a pair.


shap

_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to