Re: New draft (#5) of SRFI 189: Maybe and Either: optional container types Marc Nieper-WiÃkirchen 14 Jun 2020 20:57 UTC
Am So., 14. Juni 2020 um 22:30 Uhr schrieb John Cowan <xxxxxx@ccil.org>: > > > > On Sun, Jun 14, 2020 at 3:25 PM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote: > >> What do you think of the names >> >> `just->list' and `right->list' instead? If given a Nothing or a Left, they will return #f as a special case. It is an error to call them on any other value. > > > just->list would imply that it is an error to call it on a non-Just. I'll stick with "multitruth" even though it's a rather oddball word. If you want to go with such a long word, `list/false' is not longer, but maybe clearer. Why don't you like `->list*'? >> With the correct specification and implementation of `maybe-unfold' according to the protocol, a Scheme implementation can raise an error if >> >> (generator-unfold GEN maybe-unfold) >> >> is called on a generator of length 2 or more. > > > That pretty much decides me on this issue. I do *not* believe that it is an error to unfold into a fixed-size container from a generator that can deliver more values than the fixed size. In particular, there is nothing wrong with unfolding an infinite generator into a fixed-size container. The additional values available from the generator are simply never used for anything, That's not unfolding, the anamorphism, which `unfold` is supposed to be by SRFI 1. Anamorphisms have to exhaust their argument (as they potentially produce streams). > As for super-generators, they don't satisfy the generator protocol (which is specifically defined, unlike the unfold protocol), so I don't care how well or badly they work with generator-unfold. I didn't say that "super-generators" have to work with `generator-unfold`. They would have their own `super-generator-unfold`. But for such a thing to work, one needs a uniform unfold protocol. And even without a specified unfold protocol, it is pretty much clear what the correct definition is in the same way as it is clear that 1 shouldn't be considered a prime number.