[R6RS] my notes on today's conference call (24 May 2006)
William D Clinger
will at ccs.neu.edu
Wed May 24 13:49:16 EDT 2006
May 24 2006 12:45pm 812-856-3600, PIN 001386#
Present by about 12:44pm:
Kent, Mike, Will, Anton, Matthew
0. finalize agenda (1 minute)
issues to add:
semantic model
- definitions: top-level, library-level, internal
- top-level, library-level, form-level
- what is a program?
- what things will have an R6RS semantics?
1. action items from 5/17/2006 (5 minutes)
- complete and commit updated status report (Kent)
nothing new
- comment on syntax srfi (All but Kent)
Mike's comments
- carried over:
- withdraw Unicode SRFI (Matthew)
should happen today
- mail refined core/language split proposal (Anton)
in progress
- refine library modifications to allow subsetting, etc. (Matthew & Kent)
many issues, not just subsetting
- update reference implementation for arithmetic SRFI (Will)
in progress
- discuss SRFI 1 candidates (All)
including: every, any, fold, fold-right, iota, filter, filter-map,
partition, find, concatenate, and generalized member, remove, assoc
no discussion yet
- respond to Mike's proposal for extending symbol syntax (Matthew & Anton)
all but Matthew have responded; Matthew okay with consensus
- respond to Mike's proposal for eval (All but Mike)
no responses yet
2. upcoming meetings (5 minutes)
- mike cannot meet on wednesday 5/31, 6/7, or 6/14
- tuesdays are okay those weeks---can we switch?
yes; change "permanently" to Tuesday
3. semantic model
- definitions: top-level, library-level, internal
- top-level, library-level, form-level
- what is a program?
- what things will have an R6RS semantics?
Matthew has proposed that libraries have R6RS semantics,
that programs do not have R6RS semantics
no semantics for top-level forms
- what about scripts?
consensus: we should try to define a notion of script,
with well-defined portable semantics
Mike will post something to start the discussion
evaluation model (10 minutes)
- require expansion before evaluation?
yes: unanimous
- require syntax checking before evaluation?
yes: unanimous
- allow interleaved macro expansion, syntax checking, and evaluation?
no: see above
- exception votes: 4, 5, 7, 8
4. eval (10 minutes)
- exception votes: 44, 46, 47, 48
5. I/O (10 minutes)
- exception votes: 51, 52, 59, 60, 61
6. dynamic-wind before and after thunks (5 minutes)
- exception vote: 43
7. adjourned about 1:45pm
****************************************************************
Outcome of detailed discussions:
We need a macro-expansion-time model of exception processing.
If a script or library form is not syntactically correct, then
execution of the script or library is not allowed to begin.
Then the following four questions can go away, along with their
associated conditions.
4. If a definition or expression is not syntactically
correct (e.g. (if x y z w) or (lambda (x x) x)),
then it (must/should/may/might/returns/abstain/discuss)
Vote: must, must, discuss, must, discuss
Outcome: discuss
raise an exception with
condition type: &syntax
5. If a definition or expression refers to a variable
that is not bound within the library in which the
definition or expression appears, then it
(must/should/may/might/returns/abstain/discuss)
Vote: must, must, discuss, must, discuss
Outcome: discuss
raise an exception with
condition type: &undefined-variable
7. If an assignment (set!) is executed, and the left
hand side of the assignment is not defined in the
library that contains the assignment, or in some
other context has not yet been defined, then it
(must/should/may/might/returns/abstain/discuss)
Vote: must, must, discuss, discuss, discuss
Outcome: discuss
raise an exception with
condition type: &undefined-variable
8. If an assignment (set!) is executed, and the left
hand side of the assignment is immutable because
it was imported, or is defined in some environment
whose exported variables are immutable, then it
(must/should/may/might/returns/abstain/discuss)
Vote: should, must, discuss, must, discuss
Outcome: discuss
raise an exception with
condition type: &immutable-variable
****************************************************************
44. If the first argument to eval is not syntactically
correct, then it
(must/should/may/might/returns/abstain/discuss)
Vote: must, must, must, must, must
Outcome: must
raise an exception with
condition type: &syntax
Issue: "must raise" eliminates the possibility of
a purely interpretive eval.
46. If the first argument to eval is a definition, then it
(must/should/may/might/returns/abstain/discuss)
Vote: should, discuss, must, must, discuss
Revote: should, must, must, must, should
Outcome: discuss
Reoutcome: must
raise an exception with
condition type: &eval-definition
revised condition type: &syntax (accepted unanimously)
Issue: What would it mean to eval a definition?
(We no longer have a top-level environment.)
Issue: Kent prefers &syntax to &eval-definition
47. If the argument to null-environment or scheme-report-environment
(which will be in an R5RS compatibility library)
is not the exact integer 5, then it
[was: is not one of the exact integers 5 or 6, then it]
(must/should/may/might/returns/abstain/discuss)
Vote: should, discuss, must, must, discuss
Revote: must, must, must, must, must
Outcome: discuss
Reoutcome: must
raise an exception with
condition type: &domain
Issue: If null-environment and scheme-report-environment
are present only in the R5RS compatibility library, then
it's probably better to restrict to 5, not allowing 6.
Unanimous: move to R5RS compatibility library.
48. If interaction-environment is called, then it
(must/should/may/might/returns/abstain/discuss)
Vote: should, discuss, abstain, must, may
Outcome: discuss
Reoutcome: irrelevant
raise an exception with
condition type: &nonstandard
Issue: The interaction-environment procedure is optional
even in R5RS, so we could flush it entirely.
Unanimous: we flush interaction-environment entirely.
****************************************************************
Moved by Will: that Mike reword the following questions as
appropriate for the expected R6RS i/o system.
Seconded by Anton. Motion passed by unanimous consent.
51. If call-with-output-file or open-output-file is asked
to open a file that seems already to exist, then it
(must/should/may/might/returns/abstain/discuss)
Vote: may, discuss, must, discuss, must
Outcome: discuss
table
raise an exception with
condition type: &file-exists
Issue: SRFI 79 gives options
52. If the string argument to call-with-input-file,
call-with-output-file, open-input-file, or
open-output-file is not a string of the form
that is used to name files on the executing
systems, then it
(must/should/may/might/returns/abstain/discuss)
Vote: should, should, must, may, discuss
Outcome: discuss
raise an exception with
condition type: &domain
Issue: OS-dependent weirdness might make this
undecidable, especially as systems evolve.
59. If read encounters an external representation of the
form #{<datum>*}, where <datum>* is a sequence of
valid external representations, then it
(must/should/may/might/returns/abstain/discuss)
Vote: should, discuss, must, discuss, discuss
should, must, must, may, abstain
Outcome: discuss
no majority
raise an exception with
condition type: &lexical
Issue: Are implementations allowed any extensions to
the lexical syntax, or must programs explicitly import
from nonstandard libraries in order to use nonstandard
extensions?
60. If read encounters any other nonstandard external
representation, then it
(must/should/may/might/returns/abstain/discuss)
Vote: must, must, must, must, must
Outcome: must
raise an exception with
condition type: &lexical
61. If the first argument to write, display, or write-char
cannot be output to its second argument (e.g. the first
argument to write-char is some weird Unicode character,
and the output port accepts only ASCII characters), then it
(must/should/may/might/returns/abstain/discuss)
Vote: must, must, abstain, discuss, must
Outcome: discuss
raise an exception with
condition type: &incompatible
****************************************************************
Voted to table the following question pending further research
on what has been published:
43. If an escape procedure is used to escape from the
dynamic context of the before or after thunks passed
to a dynamic-wind, then it
(must/should/may/might/returns/abstain/discuss/escapes)
where "escapes" might mean you're not in until you've
finished all of the before thunk, and you're out as soon
as you call the after thunk
Vote: discuss, discuss, escapes, returns, discuss
Outcome: discuss
raise an exception with
condition type: &violation
****************************************************************
More information about the R6RS
mailing list