On Sat, Sep 3, 2022 at 9:51 AM Wolfgang Corcoran-Mathe <[email protected]>
wrote:


> 1. Can (complement proc) return #f if proc returns multiple values?
>

As in the rest of Scheme, multiple/zero values are forbidden unless
explicitly permitted.

> 2. Why include both 'swap' and 'flip'?  The sample implementation
> of 'swap' (srfi/235-impl.scm, line 9) differs from the spec. in that
> the returned procedure accepts a "rest" argument:
>

The documentation for `swap` is wrong: the idea is that it reverses the
first two arguments and leaves the rest in the given order, whereas `flip`
reverses all the arguments.  Fixed.

> 3. Minor clarifications: Is (conjoin) equivalent to (constantly #t)?
> Is (disjoin) equivalent to (constantly #f)?
>

Yes, but no change is required.  Remember that what is defined here is not
the behavior of (conjoin '()), which is equivalent to (constantly #t), but
of ((conjoin '() arg ...), which is equivalent to #t.

4. The 'all-of' and 'some-of' sample implementations don't return
> the predicate's truthy value.
>

Arvydas, can you fix this?  Thanks.

> 5. The spec. of 'on' is ambiguous.  mapper is applied "to each obj
> in any order", then reducer is applied to the results--but in what
> order?  The example doesn't settle this, since the reducer (+) is
> commutative.
>

My intention was that the reducer should be applied to the results in
order, but perhaps it would be better to say that the reducer must be
commutative.  What do you think?

6. What happens if (on f g) is applied to no arguments?
>

I've changed it to require at least one argument.

> 7. Is (apply-chain) equivalent to (apply-chain values)?  If not,
> what happens?


I've changed this to require at least one argument also.

> 8. The example for 'case-procedure' lacks an else-thunk.
>

It's meant to be optional, so I've added square brackets.

Reply via email to