[LISPWORKS][Common Lisp HyperSpec (TM)] [Previous][Up][Next]


Issue EXTRA-RETURN-VALUES Writeup

Version 6 (not shown here) is what passed.

It was modified by amendment to strike everything in the

proposal section except for the first paragraph.

v6 is the one that passed.

-kmp (Aug 89)

-----

Issue: EXTRA-RETURN-VALUES

References: Chapter 1, Section 1.5, Working draft of standard

Category: Clarification

Edit history: 8-JAN-89, Version 1 by Masinter

3-FEB-89, Version 2 by Chapman

10-MAR-89, Version 3 by Chapman

30-MAY-89, Version 4 by Pierson

20-JUN-89, Version 5 by Chapman

Problem: Is it OK to return extra values from Common Lisp functions?

Proposal: EXTRA-RETURN-VALUES:NO

A function that is specified by the standard must return EXACTLY the number

of return values specified by the standard.

The following functions are explicited permitted to have additional

return values:

gethash

remhash

get-macro-character

get-dispatch-macro-character

read

read-preserving-whitespace

read-delimited-list

read-line

read-char

unread-char

peek-char

listen

read-char-no-hang

read-from-string

parse-integer

read-byte

write-to-string

prin1-to-string

princ-to-string

write-string

format

y-or-n-p

yes-or-no-p

open

rename-file

probe-file

directory

trace

untrace

apropos-list

describe

Rationale:

The reason is that additional arguments are visible to otherwise

portable programs. For instance, (multiple-value-call #'cons (floor x

y)) looks portable, but it will try to pass the wrong number of

arguments to CONS if FLOOR returns an extra value.

The order of the above list is by page number in CLtL.

Current Practice:

At least one implementation returns extra values for certain functions

not currently specified to return those values.

Adoption Cost:

Implementations and their associated documentation that now contain

functions that return extra values will have to change.

Benefits:

Programs will potentially become more portable.

Conversion Cost:

See Adoption Cost.

Aesthetics:

None.

Discussion:

Pierson created the original list, Moon revised the list.

Moon says:

"The ones that I care the most about are gethash and read-line."


[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996-2005, LispWorks Ltd. All rights reserved.