···1414//
1515// "undefined" should not be thought of as a value, but as a way
1616// of telling the compiler that you are not assigning a value
1717-// _yet_. Any type may be set to undefined, but attempting
1818-// to read or use that value is _always_ a mistake.
1717+// _yet_. Any variable may be set to undefined, but attempting to
1818+// read its value before assigning one _always_ a mistake.
1919//
2020// * null
2121//
···2424// The "null" primitive value _is_ a value that means "no value".
2525// This is typically used with optional types as with the ?u8
2626// shown above. When foo equals null, that's not a value of type
2727-// u8. It means there is _no value_ of type u8 in foo at all!
2727+// u8. It means you have assigned foo to have _no value_!
2828//
2929// * error
3030//
···3232//
3333// Errors are _very_ similar to nulls. They _are_ a value, but
3434// they usually indicate that the "real value" you were looking
3535-// for does not exist. Instead, you have an error. The example
3636-// error union type of MyError!u8 means that foo either holds
3737-// a u8 value OR an error. There is _no value_ of type u8 in foo
3838-// when it's set to an error!
3535+// for does not exist. Instead of "no value", you have an error.
3636+// The example error union type of MyError!u8 means that foo
3737+// either holds a u8 value OR a MyError error.
3938//
4039// * void
4140//
···5554// * undefined - there is no value YET, this cannot be read YET
5655// * null - there is an explicit value of "no value"
5756// * errors - there is no value because something went wrong
5858-// * void - there will NEVER be a value stored here
5757+// * void - there will NEVER be a value here
5958//
6059// Please use the correct "no value" for each ??? to make this program
6160// print out a cursed quote from the Necronomicon. ...If you dare.