[Personal opinion: the extra nil in the (values nil a i) is quite unfortunate 
in the light of interfacing to libraries like Pascal/Ada et.al. where most 
"functions" are procedures that you interface to via :out and :in-out 
parameters, and void return type. cmucl/sbcl's documentation and clisp do TRT.]

-----Urspr�ngliche Nachricht-----
To: 'Raymond Toy'; 'Christophe Rhodes'
Cc: '[EMAIL PROTECTED]'; 'Peter Van Eynde'

Hi,

Here's a bug I consider very serious, affecting sbcl and cmucl.
a. mismatch between documentation and observable behaviour
b. regression against past behaviour.

The documentation for sbcl and for cmucl says in �8.7.3
"     (def[ine]-alien-routine "cfoo" void
       (str c-string)
       (a char :in-out)
       (i int :out))
The Lisp function cfoo will have two arguments (str and a) and two return 
values (a and i)."

It provides three return values in cmucl-19a-release-2004-07-28-9 and 
sbcl-0.8.17.4-1 (from Ubuntu/Hoary for i386)!

W.r.t point b), I'm not sure, but my memory is that cmucl matched its 
documentation 10 years ago (when we used cmucl-15b upto 17c in our project). So 
I'm not 100% its a regression against cmucl-17c.

Giving the above CLISP syntax, CLISP returns 2 values in this case, as cmucl 
documents. I'm not sure whether clisp was modeled after cmucl back in 1995, 
we'd have to ask Bruno.

I find it very sad that there's now such a dissimilarity between cmucl/sbcl and 
clisp in the area of :out values(even if its only the particular case where the 
function return type is void).

The fact that cmucl returns (values nil a i) was recently brought to my 
attention in clisp-lisp by Bernard Urban, and I thought "I need to investigate 
that".

Regards,
        J�rg H�hle.


Reply via email to