blob: 8aa666f2467edf42bc2585638de5b09755657ac7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# Symbols are strings are symbols
In Scheme, symbols are literally just interned and immutable strings.
They can contain any character a string can, constructed either via
`string->symbol` or the modern `|foo bar baz|' syntax for quoted
symbols. Why not just embrace the fact that they are strings?
Scheme strings are mutable, but they are a terrible choice for text
manipulation, because they are constant-length. They are literally
just vectors of characters. If you wanted a vector of characters,
well, use a vector of characters!
Zisp won't differentiate between symbols and strings. All strings
will be immutable, string constants will be automatically interned,
and bare symbols will just be reader syntax for a string constant.
Instead of `string->symbol` we will have `string-intern` which
basically does the same thing. Dynamically generated strings that
aren't passed to this function will be uninterned.
|