[R6RS] final omnibus vote list
    William D Clinger 
    will at ccs.neu.edu
       
    Mon May  1 10:16:30 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:A
2.  add (void) constructor if we choose option B on Vote 1
    Vote:no
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:no
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:yes
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:abstain
13. add rec form:
    (rec id e) => (letrec ([id e]) id)
    Vote:no
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:no
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:no
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:abstain
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:abstain
26. add cond-expand (SRFI 0)
    Vote:abstain
27. add homogeneous numeric vectors
    Vote:yes
28. make () self-evaluating
    Vote:no
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:abstain
35. flush sealed clause in records
    Vote:abstain
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:no
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:no
Will
    
    
More information about the R6RS
mailing list