[R6RS] draft omnibus vote list

dyb at cs.indiana.edu dyb at cs.indiana.edu
Thu Apr 20 12:51:42 EDT 2006


Draft Omnibus Vote List

--------

Let's proceed as follows:

  Step 1: Look over this list and request additions by responding to
	  this note.  The deadline for requesting additions is
          7:00pm EDT, Sunday, April 23 (next Sunday).

  Step 2: I will post a final list by 7:00pm EDT, Tuesday, April 25.

  Step 3: After the final list is posted and before 7:00pm EDT, Tuesday,
	  May 2, each of us will respond with a copy of the final list
	  with our votes added.  List a vote or explicitly say 'abstain'
	  for each item on the list.  (Any missing votes will be treated
	  as proxies to the chair---thanks in advance.)  Except for the
	  votes, the response should be a verbatim copy of the final list.

  Step 4: For all votes with no abstentions and a clear majority, I will
          declare an outcome.  All other votes will be retaken during our
          phone conversation on Wednesday, May 3.

Discussion, including requests for clarifications, on any of the listed
items can begin immediately and continue through the final votes on
Wednesday, May 3.

--------

Respond to the final list with "yes", "no", or "abstain" for all votes
unless specific options (A, B, etc.) are given, in which case respond with
"A", "B", ..., or "abstain".

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:

2.  add (void) constructor if we choose option B on Vote 1

    Vote:

3.  add #!void syntax if we choose option B on Vote 1

    Vote:

4.  add (begin) expression

    (begin) => unspecified value [or Vote 1 replacement]

    Vote:

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:

6.  extend case to use member in place of memv

    Vote:

7.  add graph printing: #n= marks datum, #n# references

    Vote:

8.  write uses graph printing when cycles are detected if we choose yes on
    Vote 7.

    Vote:

9.  add mechanism for causing write to use graph printing if we choose yes
    on Vote 7.

    Vote:

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:

11. relegate one-armed if to r5rs-compatibility library

    Vote:

12. add call/cc as an "official" abbreviation for call-with-current-continuation

    Vote:

13. add rec form:

    (rec id e) => (letrec ([id e]) id)

    Vote:

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:

15. require write to use #n( prefix

    Vote:

16. allow write to use #n( prefix

    Vote:

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:

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:

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:

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:

21. specify that append does not copy first argument when second is '()

    Vote:

22. modify quasiquote to support Alan Bawden's PEPM '99 nested quasiquote
    extensions

    Vote:

23. mvbinding construct names, three options:
    A. let-values and let*-values
    B. let-values and let-values*
    C. mvlet and mvlet*

    Vote:

24. add #!eof as external representation for eof-object

    Vote:

25. add support for formatted output

    Vote:

26. add cond-expand (SRFI 0)

    Vote:

27. add homogeneous numeric vectors

    Vote:

28. make () self-evaluating

    Vote:

29. add support for weak pointers

    Vote:

30. #t and #f must be followed by a delimiter

    Vote:

31. characters must be followed by a delimiter

    Vote:

32. add support for regular expressions

    Vote:



More information about the R6RS mailing list