SRFI 157 draft 2 comments Sudarshan S Chawathe (10 Aug 2017 03:10 UTC)
|
Re: SRFI 157 draft 2 comments
Marc Nieper-Wißkirchen
(10 Aug 2017 06:44 UTC)
|
Re: SRFI 157 draft 2 comments
Marc Nieper-Wißkirchen
(12 Jan 2018 20:18 UTC)
|
SRFI 157 draft 2 comments Sudarshan S Chawathe 10 Aug 2017 03:10 UTC
I enjoyed reading this SRFI very much. Below are a few comments, mostly minor [Ref. "Draft #2 published: 2017/7/29"]. - In the test-tail-position example, should the "tail"s in the let-syntax be "tail?"s? - with-continuation-mark: I am not sure whether there is supposed to be an ordering in the evaluation of <key> and <value>. I would guess not, but an explicit statement either way would be helpful. - In continuation-mark-set->list*, perhaps the fixed value of #f to indicate a missing value for a mark could be replaced with a more general default, similar to what is used for hash tables in SRFI 69, etc. (so that programs may easily use #f as a mark's value). A similar comment applies to continuation-mark-set-first and call-with-immediate-continuation-mark. - In the sample implementation, file lib/inferior/expression.scm, the four definitions immediately following the comment "Named let" are duplicated. - In the sample implementation, file lib/inferior/unspecified.scm, "unspecified?" is used both as a predicate for the "<unspecified>" record-type and as a name for a separately defined procedure. I am not sure if this is allowed by R7RS. (Kawa complains, but Larceny does not, in my very limited testing.) - Minor points: - An earlier note that a continuation mark is conceptually a key-value pair associated with a frame, with keys compared using eq?, would be helpful (for better understanding of the examples, in particular). - current-continuation-marks: The description mentions continuation-mark-set->list and continuation-mark-set-first, but not continuation-mark-set->list*, which seems a bit odd, although the implication is probably clear enough. - Perhaps "continuation-mark-set" could be replace with "continuation-marks" in the procedure names. I think the latter is simpler and matches the names "current-continuation-marks" and "continuation-marks?" better, though I can also see value in sticking with the names used by Racket. - (very minor) In the factorial example (which is very nice), a distinction could perhaps be drawn between "procedures and processes they generate" (using terminology from the "Structure and Interpretation of Computer Programs" book) in the context of recursion v. iteration . Even more minor, the correspondence between fact1 and fact2 could be made even more obvious by using a named-let in fact1. Regards, -chaw