[Scheme-reports] Comments on draft 6 Vitaly Magerya (18 Feb 2012 15:31 UTC)
|
Re: [Scheme-reports] Comments on draft 6
Jussi Piitulainen
(18 Feb 2012 15:56 UTC)
|
Re: [Scheme-reports] Comments on draft 6
John Cowan
(18 Feb 2012 23:16 UTC)
|
Re: [Scheme-reports] Comments on draft 6
Alex Shinn
(19 Feb 2012 05:24 UTC)
|
Re: [Scheme-reports] Comments on draft 6
John Cowan
(19 Feb 2012 19:23 UTC)
|
Re: [Scheme-reports] Comments on draft 6
John Cowan
(19 Feb 2012 22:39 UTC)
|
Re: [Scheme-reports] Comments on draft 6
Vitaly Magerya
(20 Feb 2012 15:53 UTC)
|
Re: [Scheme-reports] Comments on draft 6
John Cowan
(20 Feb 2012 18:50 UTC)
|
Re: [Scheme-reports] Comments on draft 6
Vitaly Magerya
(21 Feb 2012 15:34 UTC)
|
Re: [Scheme-reports] Comments on draft 6
John Cowan
(21 Feb 2012 16:25 UTC)
|
Re: [Scheme-reports] Comments on draft 6
Alex Shinn
(23 Feb 2012 01:27 UTC)
|
Re: [Scheme-reports] Comments on draft 6
John Cowan
(23 Feb 2012 03:27 UTC)
|
Re: Comments on draft 6
Arthur A. Gleckler
(21 Feb 2012 05:39 UTC)
|
Re: Comments on draft 6
Arthur A. Gleckler
(21 Feb 2012 06:29 UTC)
|
Re: [Scheme-reports] Comments on draft 6
John Cowan
(22 Feb 2012 22:34 UTC)
|
Hi, folks. I've read draft-6, and here are some comments (it's mostly editorial things). Page 2, contents: it appears that "Alphabetic index of definitions of concepts, keywords, and procedures" link points to page 75, not page 77 (where the index is). This is true for both the link in the contents, and the PDF bookmark. Page 5, section 1.3.1: the last two paragraphs of section 1.3.1 use the word "implementation" five times in five sentences; can this be rewritten somehow? Page 6, section 1.3.2: "in addition to errors signalled by situations [...]" -- is "signalled by situation" the correct usage? Shouldn't it be "signalled in situations"? Page 6, section 1.3.2: what's the significance of "newly allocated" here? This is the first time such a phrase is used in the report; maybe a reference to another section that clarifies what it means and why is it important will help? Index has no references to "newly" or "allocation". Page 6, section 1.3.3: vertical spaces between paragraphs are much larger here than in any other place of the report; why is that? Page 17, section 4.2.3: there are two missing ")" in the final examples. Page 18, section 4.2.5: how does the use of "lazy" in the example ensures that heap is not exhausted? This is the only example of it's usage and it's not clear what it does here, or why is it generally needed (it's definition on page 17 does not clarify either). (Don't get me wrong, I read the discussion behind SRFI 40 and 45, but the report needs to explain what's going on). Page 18, section 4.2.5: in the same example, what is "heap" at all? This is the only place in the report where this word is used. Page 23, section 5.1: "program parts other than expressions that are present at the top level of a program can be interpreted declaratively" -- what does it mean for program parts to be "interpreted declaratively"? What's the difference between this, and expressions, which are "interpreted imperatively"? Further on page 24 (section 5.2.1) it is said that "at the top level of a program, a definition [...] has essentially the same effect as the assignment expression", which further increases my confusion about what is "declarative" and what is not. Page 24, section 5.2.1: "implementations are permitted to provide an initial environment in which all possible variables are bound to locations, most of which contain unspecified values" -- this seems to contradict section 5.1, page 23, where it says "the initial (or 'top level') environment is empty except for import". This also does not play along with environment specifiers to eval and load: for example section 6.2, page 51 says "[null-environment] contains only the bindings [...]" -- in effect, an implementation that uses the initial environment where everything is bound must nonetheless support environments where not everything is bound. Page 25, section 5.4: define-record-type is said to bind <name> to "a representation of record type", but there does not seem to be anything else you might do with it (correct?). What is the rationale for introducing this binding? Does this mean I can't name the constructor the same as the record type? Page 26, section 5.5.1: library name can contain "unsigned exact integers" -- maybe "nonnegative" instead of "unsigned"? Also, are there limits on which integers an implementation can represent exactly, i.e. can I be sure that 802000 is exact? Page 27, section 5.5.1: "however a REPL should permit these actions" (redefinitions) -- this paragraph this paragraph started talking about top level and libraries, but then mentioned REPL. Are "top level" and "REPL" interchangeable? Page 27, section 5.5.1: "begin declaration takes a list of expressions and declarations to be spliced literally" -- since library form does not allow expressions or definitions outside of begin form, what is being spliced, and into what? Page 27, section 5.5.1: "the top-level expressions in a library" -- maybe this can be reworded somehow to avoid term mixture? (It is not explained if there is such a thing as a top level in a library). Page 28, section 5.5.2: the example on this page displays some control characters to "clear vt100". Should I argue why such things do not belong in this report? Note that without clearing the screen the example's output will be rather ugly (a constant stream of lines), so maybe a different (preferably smaller) example of library usage can be found? Page 31, section 6.2.2: "(/ 3 4)" expression should all be on the same line. Page 32, section 6.2.4: "negative zero is an inexact value written -0.0, which is distinct (in the sense of eqv?) from 0.0" and "however numerical comparisons treat negative zero as equal to zero" -- but eqv? on number is defined as numerical comparison (page 29, section 6.1), so are they equal or not? Page 32, section 6.5.2: what is the rationale for short, single, double and long inexact numbers? Are there implementations that distinguish those? Page 48, section 6.10: there's a missing ")" in the string-for-each example. Page 48, section 6.10: "the effect of passing no value or more than one value [...] is unspecified" -- doesn't this contradict page 71, where it says "programs are now explicitely permitted to pass zero values or more than one to continuations that discard them"? Page 50, section 6.11: "if the handler returns, an exception is raised in the same dynamic extent as the handler" -- is the same exception raised to another one (i.e. what is "an exception")? Page 55, section 6.13.4: is it intentional that "system interface" is a subchapter of "input and output"? Page 56, section 6.13.4: does calling exit ignores dynamic-wind guards and exception handlers? Page 56, section 6.13.4: "[...] Scheme environments that can be passed to eval" -- environment specifiers, not environments are passed to eval. Page 56, section 6.13.4: it is an error to mutate any of the strings returned by get-environment-variables; what about the whole alist? Page 56, section 6.13.4: what is the rationale of current-second function, what are it's intended uses? Page 56, section 6.13.4: what is the rationale for having current-jiffy and jiffies-per-second functions? Why doesn't current-jiffy return seconds directly? Finally, in many places where a function is described the report first says "it is an error if [...]" and only then describes what the function does. Can we reverse this order? _______________________________________________ Scheme-reports mailing list Scheme-reports@scheme-reports.org http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports