[plt-dev] Pre-Release Checklist for v4.2
> I would like to know why #<undefined> isn't utilized more - or,
> alternatively, why it exists in the first place. Is there a real
> difference between no value (my mental model for #<void>) and an
> undefined/uninitialized value (my mental model for #<undefined>)?
I think your mental model is pretty accurate: #<undefined> is primarily
used for mutable entities that are only very briefly uninitialized. It's
supposed to be extremely rare, especially because mutation is used much
more sparingly in Scheme than other languages. By contrast, #<void> is
used for side effects that don't need to provide any useful result.
That's not at all rare.
By and large, my experience has been that if #<undefined> shows up
somewhere in a program, there's probably a bug, whereas #<void> has lots
of useful places to show up.
Dave