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.
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,
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.