[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.