Email list hosting service & mailing list manager


Re: SRFI 121: Generators John Cowan 07 Feb 2015 01:40 UTC

Sudarshan S Chawathe scripsit:

>   * In the description of make-coroutine-generator, should the
>     occurrences of 'generate' (in text and code) be
>     'make-coroutine-generator' instead?

Fixed.

>   * In the examples just before make-bits-generator, shouldn't the
>     call
>
>     (generator->list (make-reverse-vector-generator '#(a b c d e) 2))
>
>     yield (e d c) instead of (e d c b)?

Fixed.

>     Also nearby, the use of #f as the start argument seems intuitively
>     clear but that usage is not explicitly mentioned.

Changed to 0; there was no intention to support #f.

>   * (minor) In the description of gconcatenate, the last sentence
>     before the code is probably OK but it took me a couple of reads to
>     check possible interpretations.  I am interpreting it as: each
>     returned generator will be tail-called until it returns the eof
>     object before moving to the next.

That sentence makes no sense.  Removed.

>   * In the description of gmerge/gunion/gintersection, I'm a bit
>     unclear on what exactly a caller can expect if the inputs are not
>     sorted as indicated.  Is it considered an error (as in undefined
>     results)?

I changed it to "It is an error if the output of each generator is not
correctly ordered according to <var>comparator</var>."

>   * It is probably something obvious, but why isn't generator-collect
>     called generator-map (similar to gfold/generator-fold)?

Generator-map would imply a map from a generator to another generator,
which is what gmap is, so I gave it a different name.

>   * (minor) The motivation for, and efficiency promise if any, of
>     gfilter-map is unclear to me.

Agreed, it's not worth having.  Removed.

>   * Is (gpairs car-gen cdr-gen) equivalent to
>     (gmap cons car-gen cdr-gen)?

Yes, it is.  Removed.

>   * In the description of glists, 'k' seems undefined.

Changed from "have k items" to "have the expected number of items".

>     Also, the behavior when sizer is a generator is not explicitly
>     mentioned, though an intuitive interpretation is easy to guess
>     (and my guess matched the test in generators-test.scm).

Clarified.

>   * For gindex, is it correct that it is not an error for index-gen to
>     generate indices >= the number of items returned by (a finite)
>     value-gen?

No, it's an error all right.

>   * Question similar to the above for gnth-value, generator-nth: n >=
>     number of items is OK?

For generator-nth, it's an error, but not so for gnth-value;
if there are less than n values in the input, you get a null generator.

>   * The example for gnth-value seems to be missing the 'n' argument.
>     I am guessing that argument should be 2 based on the result
>     there.

Yes, fixed.

>     Is it true that the first element of gen is always
>     returned?

Yes, because its index is 0, which is a multiple of every n.

>   * For generator-last, the behavior for infinite generators seems
>     obvious, but given the "Be careful..." comments for some earlier
>     procedures, it may make sense to add a similar note here.

Done.

>   * Similar to above, for
>
>     (generator-find (lambda (x) #f) infinite-gen)

Done.

>     Perhaps a blanket comment somewhere may be better than the
>     individual ones for such cases.  The very first sentence of the
>     section does indicate "consume all the values" so  perhaps it is
>     fine, but it took me a couple of parses (may be just me!):
>
>      all (the values of the generator passed to them) v.
>
>      (all the values) of (the generator passed to them).

Reworded to "all the values available from the generator that is
passed to them."

--
John Cowan          http://www.ccil.org/~cowan        xxxxxx@ccil.org
"The exception proves the rule."  Dimbulbs think: "Your counterexample proves
my theory."  Latin students think "'Probat' means 'tests': the exception puts
the rule to the proof."  But legal historians know it means "Evidence for an
exception is evidence of the existence of a rule in cases not excepted from."