Re: Fix cross-platform reproducibility
Marc Nieper-WiÃkirchen 07 Mar 2023 11:46 UTC
Am Di., 7. März 2023 um 11:29 Uhr schrieb John Cowan <xxxxxx@ccil.org>:
>
>
>
> On Tue, Mar 7, 2023 at 1:52 AM Marc Nieper-Wißkirchen <xxxxxx@gmail.com> wrote:
>
>> This tells me that generators should have their names end with "!".
>
>
> We don't normally use "!" when there is no opposition between functional and non-functional versions. Thus we don't for example write `read!` or `newline!`, since there is nothing you can do with a port that doesn't involve mutating it.
For ports, this is probably attributable to history. See the naming
of arguments to, say, make-custom-textual-input-port in R6RS. They
don't have to carry historical baggage and end in "!" if they
conceptually mutate locations.
R6RS and R7RS both speak of modification of locations when they
explain the "!" convention.
It is easy to make mistakes with generators when the order of
invocation matters, and the "!" would at least warn the programmer.