Another stab at why Symbols are special

This commit is contained in:
Tony Garnock-Jones 2019-07-04 05:58:15 -04:00
parent 04868a2309
commit c6700c2f2b
1 changed files with 5 additions and 3 deletions

View File

@ -880,9 +880,11 @@ types.[^why-dictionaries]
predicate to programmers, and so if a data type demands a special
equivalence predicate, as `Dictionary`, `Set` and `Float` all do,
then the type should be included in the base language. Otherwise,
it can be represented as a `Record` and treated separately. Both
`Boolean` and `String` are seeming exceptions: they merit
inclusion because of their cultural importance.
it can be represented as a `Record` and treated separately.
`Boolean`, `String` and `Symbol` are seeming exceptions. The first
two merit inclusion because of their cultural importance, while
`Symbol`s are included to allow their use as `Record` labels.
Primitive `Symbol` support avoids a bootstrapping issue.
All of these conventions are optional. They form a layer atop the core
`Value` structure. Non-domain-specific tools do not in general need to