Hi Laurent, It is interesting to see the historical evolution of multiple values in Scheme. In June 1988 this proposal was posted:
http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1988/msg00230.html At the Snowbird meeting in July 1988 no concensus was found. 3.7. Add LAMBDA*. Not adopted. The main objection seemed to be that this proposal requires a new kind of stored value (multiple values) that either is not an expressed value or does not behave like other expressed values. > 3.8. Multiple return values. Not adopted. Debate centered on whether returning a single "multiple value" should be equivalent to returning that value normally. A secondary issue concerned whether extra return values should be ignored or an error. We approached consensus on this. After much debate it was decided to go on to other issues and let Dybvig and Hanson discuss the matter in private. Their discussion later that night led to a conclusion that we don't understand the issues well enough to charge ahead with either proposal 3.7 or 3.8 or a variation. > 3.9. Optional arguments. Not considered, as it was felt that this would be a more controversial issue than proposal 3.8 on which we had just spent a great deal of time. The discussion went on on this thread: http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1989/msg00148.html Scroll down on this page to see all entries: http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1989/threads.html The discussion on multiple values pops up now and again. See for example this thread on comp.lang.scheme. https://groups.google.com/d/msg/comp.lang.scheme/ty2YeqZibNI/VR21X6XP9-IJ As for using multiple values in Racket, I use these lines (define-syntax defv (make-rename-transformer #'define-values)) (define-syntax defm (make-rename-transformer #'match-define)) (define-syntax def (make-rename-transformer #'define)) to make local definitions short. A little function to make a rotation matrix: (define (rotmat/rad θ) (defv (cosθ sinθ) (cos&sin θ)) (mat cosθ (- sinθ) sinθ cosθ)) -- Jens Axel Søgaard
____________________ Racket Users list: http://lists.racket-lang.org/users