Re: New draft (#5) of SRFI 189: Maybe and Either: optional container types
Marc Nieper-WiÃkirchen 15 Jun 2020 08:24 UTC
Am Mo., 15. Juni 2020 um 08:22 Uhr schrieb Marc Nieper-Wißkirchen
<xxxxxx@nieper-wisskirchen.de>:
>
> Am Mo., 15. Juni 2020 um 01:57 Uhr schrieb John Cowan <xxxxxx@ccil.org>:
>
> >> If you want to go with such a long word, `list/false' is not longer,
> >> but maybe clearer. Why don't you like `->list*'?
> >
> >
> > Because "*" has no fixed meaning in Lisp; it's like the use of ' or _ in Haskell as the equivalent of mathematical prime. Prime is useful in local scope, but not very helpful at all in global scope.
>
> let* is a good example, which exists at the global scope. The "*" may
> not be the best choice, but it better conveys (while definitely not
> optimally) the meaning than the suffix "multitruth".
>
> We could also drop the naming scheme with "->" for these procedures
> altogether (as the (co-)domain list + false does not have a name as a
> Scheme type) for more freedom in naming.
>
> Maybe others have better suggestions.
Anyway, it is just a name (so rather irrelevant compared with the
unfold thing, which, I think, the draft objectively gets wrong).
- Could you add `either->truth' and `either->multitruth' and
`truth->either' and `multitruth->either' as well? (The contents of a
Left are to be dropped as in `either->maybe'.) These procedures seem
to be missing for completeness.
- The name `generator->maybe' is misleading, I think. I would suspect
that it takes a generator and returns a maybe. But it takes a value
produced by a generator. The same holds for `maybe->generator'. For
completeness, add a similar pair of procedures for Eithers.