[R6RS] final omnibus vote list
Michael Sperber
sperber at informatik.uni-tuebingen.de
Sun Apr 30 06:21:31 EDT 2006
1. unspecified value, three options:
A. leave as in r5rs: set!, set-car!, etc., return unspecified value
B. require return of new void value
C. require return of zero values
Vote: C
2. add (void) constructor if we choose option B on Vote 1
Vote: Yes (even if we choose one of the others)
3. add #!void syntax if we choose option B on Vote 1
Vote: No
4. add (begin) expression
(begin) => unspecified value [or Vote 1 replacement]
Vote: Yes
5. add (define x) syntax
(define x) => (define x <void>) if we choose option B on Vote 1
(define x) => (define x <unspecified>) otherwise
Vote: No
6. extend case to use member in place of memv
Vote: No
7. add graph printing: #n= marks datum, #n# references
Vote: No
8. write uses graph printing when cycles are detected if we choose yes on
Vote 7.
Vote: No
9. add mechanism for causing write to use graph printing if we choose yes
on Vote 7.
Vote: No
10. add when and unless forms:
(when e0 e1 e2 ...) => (if e0 (begin e1 e2 ...) <unspecified value>)
(unless e0 e1 e2 ...) => (if e0 <unspecified value> (begin e1 e2 ...))
Vote: No
11. relegate one-armed if to r5rs-compatibility library
Vote: No
12. add call/cc as an "official" abbreviation for call-with-current-continuation
Vote: No
13. add rec form:
(rec id e) => (letrec ([id e]) id)
Vote: Yes
14. add #n( vector prefix:
Examples: #5(0 1 2 3 4) equiv. #(0 1 2 3 4)
#8(0 1 2 3 4) equiv. #(0 1 2 3 4 5 6 7)
#1000(#f) equiv. #(#f #f ... #f) [ 1000 #f's ]
Vote: No
15. require write to use #n( prefix
Vote: No
16. allow write to use #n( prefix
Vote: No
17. add gensyms
(gensym) => gensym
(gensym? x) => #t iff x is a gensym
gensyms have both a pretty name and a globally unique name.
(symbol->string (gensym)) => pretty name
(symbol->unique-string (gensym)) => unique name
syntax for gensyms to be decided.
Vote: No
18. add case-lambda
(case-lambda [<formals> body1 body2 ...] ...)
where <formals> is just like a lambda <formals>, and the first clause
for which the actuals correctly map to <formals> is chosen.
Vote: Yes
19. add andmap
(define andmap
(lambda (f ls . more)
(let andmap ([ls ls] [more more] [a #t])
(if (null? ls)
a
(let ([a (apply f (car ls) (map car more))])
(and a (andmap (cdr ls) (map cdr more) a)))))))
Vote: Abstain (would like more general discussion of list utils)
20. add ormap
(define ormap
(lambda (f ls . more)
(let ormap ([f f] [ls ls] [more more])
(and (not (null? ls))
(or (apply f (car ls) (map car more))
(ormap f (cdr ls) (map cdr more)))))))
Vote: Abstain (would like more general discussion of list utils)
21. specify that append does not copy first argument when second is '()
Vote: No
22. modify quasiquote to support Alan Bawden's PEPM '99 nested quasiquote
extensions
Vote: Yes
23. mvbinding construct names, three options:
A. let-values and let*-values
B. let-values and let-values*
C. mvlet and mvlet*
Vote: A
24. add #!eof as external representation for eof-object
Vote: No
25. add support for formatted output
Vote: <decided, right?>
26. add cond-expand (SRFI 0)
Vote: No
27. add homogeneous numeric vectors
Vote: No (But add bytes.)
28. make () self-evaluating
Vote: Yes
29. add support for weak pointers
Vote: No
30. #t and #f must be followed by a delimiter
Vote: Yes
31. characters must be followed by a delimiter
Vote: Yes
32. add support for regular expressions
Vote: No
33. call the new void value, if we choose option B on Vote 1:
A. "unspecific value"
B. "void value"
Vote: A
[If we choose A, I presume we would use (unspecific) rather than
(void) if we choose yes on Vote 2 and #!unspecific rather than #!void
if we choose yes on Vote 3.]
34. Should the character comparison predicates be required to be:
A. n-ary
B. binary
Vote: A
35. flush sealed clause in records
Vote: Yes, flush.
36. As with quoted constants, an implementation is allowed to create a
new type each time the same define-record-type form is evaluated or to
treat the type as a constant value, so that, for example:
(let ((f (lambda (x) (define-record-type r ---) (if x r? (make-r ---)))))
((f #t) (f #f)))
may return either #t or #f.
Should we:
A. leave it like it is
B. require the descriptor to be recreated each time
C. require the descriptor to treated as a constant
Vote: B
37. allow record? to be true of built-in types
Vote: Yes
38. The specification of make-record-type-descriptor has this:
If parent is not #f, and uid is not #f, and the parent is generative
(i.e. its uid is #f), an error is signalled.
Should this restriction be lifted?
Vote: Yes
39. pin down the dynamic environment in the before and after thunks of
dynamic-wind
Vote: Yes
40. flush named let if we choose "yes" on Vote 13
Vote: Yes
--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
More information about the R6RS
mailing list