Hi, Tobias Geerinckx-Rice <m...@tobias.gr> writes:
> Hi Maxim, > > Maxim Cournoyer 写道: >> I'd suggest we revisit 8cb1a49a3998c39f315a4199b7d4a121a6d66449 to >> use >> 'unspecified (the symbol) instead of *unspecified*, which *can* be >> serialized without any fuss in gexps. > > Bah. Could we provide our own reader? > > I'd much rather this be addressed in Guile (or failing that, > transparently by Guix) than have to deal with some magical > symbol. IIRC that was the argument for using *unspecified* in the > first place, and I think it makes sense. > > This looks more like an unexplored oversight than a well-reasoned > restriction to me. This was my original impression, but thinking more about it, it became apparent that *unspecified* is well, unspecified and shouldn't be relied on by people to be something well defined. For some background reading, see [0]. So it seems wrong in Scheme to actively set things to *unspecified*, and give a specific meaning to that. I think the semantic of the language is that it is to be used as the lack of a return value from a procedure or syntax, e.g.: (unspecified? (if #f 'one-arm-if)) -> #t Having 'unspecified?' even defined in Guile seems to go against that idea; perhaps because Wingo themselves seems to disagree in [0]. I'm also thinking 'unspecified being too close to *unspecified* is probably going to cause confusion down the line. Reverting to the originally used 'disabled may be the lesser evil. Other thoughts? Thanks, Maxim [0] https://scheme-reports.scheme-reports.narkive.com/QSQtJSAh/unspecified-values