From: Hoehle, Joerg-C. <Joe...@t-...> - 2005-06-09 11:49:21
|
[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=FCngliche Nachricht----- To: 'Raymond Toy'; 'Christophe Rhodes' Cc: 'ha...@il...'; '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 =A78.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=F6rg H=F6hle. |