I've already lobbied for maybe-and-let* (which may be abbreviated to
maybe-let*), so I am in favor of these macros.
Maybe-and-let* should unwrap the Justs when binding to the variables.
Note that we can get rid of maybe-and maybe-or if we change the
semantics of SRFI 189 and set Nothing := #f.
A significant advantage of not doing this in a dynamically typed system is that Maybes are disjoint from everything that isn't a Maybe. Allowing the Maybe and boolean types to overlap means that code dispatching on Maybe vs. non-Maybe types has to decide what to do with Nothing/#f. In statically typed systems, such actions are normally not possible. Scala has both an Option type with an explicit Nothing and nullable types (where null inhabits every type), and the result is a mess.
It doesn't reduce the
expressiveness of Maybe types in any important way. Moreover, it may
help to tame the zoo of falsy values. Currently, we have #f, #<eof>,
Only #f is technically falsy in the sense that conditionals treat it as false. The others are signal objects, and sometimes #f is too. Each is suited to a different situation, and this SRFI provides interoperation between them.
> 2) Does it belong in this SRFI or should it wait for a later SRFI?
As the SRFI is not finalized yet, I would add them to this SRFI. It
doesn't cost anything.
I tend to agree, unless Arthur has objections.
John Cowan http://vrici.lojban.org/~cowan firstname.lastname@example.org
Why are well-meaning Westerners so concerned that the opening of a
Colonel Sanders in Beijing means the end of Chinese culture? [...]
We have had Chinese restaurants in America for over a century,
and it hasn't made us Chinese. On the contrary, we obliged the Chinese
to invent chop suey. --Marshall Sahlins