This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki MultipleValues version 5

author

cowan

comment


    

ipnr

127.11.51.1

name

MultipleValues

readonly

0

text

=== Where a single value is expected ===

I asked my usual suite of Schemes to evaluate `(+ 1 (values 2 3))`.

Racket, MIT,
Gambit, Scheme48/scsh, Kawa, SISC, Chibi, SCM, Chez, !Ikarus/Vicare, Ypsilon,
!IronScheme, KSi, !SigScheme, Shoe, SXM, Sizzle, Spark, Femtolisp, Owl Lisp
all report errors, either of the form "Single
value expected, multiple values received", or else a low-level error
reflecting how multiple values are represented.

Gauche, Chicken,
Bigloo, Guile, Larceny, Mosh, NexJ, STklos, S7, XLisp, Dfsch, Sagittarius reduce the multiple values to a
single value.  Of these, Guile and NexJ treat zero values passed to a single-valued continuation as an error, Bigloo transforms it to 0, XLisp and Dfsch as the empty list, and the rest as their implementation-specific "undefined" value.

!TinyScheme, Scheme 9, Dream, Rep, Schemik, Elk, UMB, VX, Oaklisp, Inlab don't support `values`.

=== Embedded in a begin block ===

Here I'm testing `(begin (values 1 2) 3)` and `(begin (values) 3)`.  Of the Schemes above that support multiple values, only SCM, !SigScheme, Shoe, and Owl Lisp report an error; the rest return 3.

time

2014-12-28 10:04:15

version

5