summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylan Kammer <taylan.kammer@gmail.com>2026-01-03 01:41:45 +0100
committerTaylan Kammer <taylan.kammer@gmail.com>2026-01-03 01:41:45 +0100
commit067e9a04dbce2b36d8094ab3aa7dc0c934d9486c (patch)
tree97488b3cc0d007d8451184698e548bf8b9978d06
parent8ceb82e3f8105abb7d17f5ad82184a75b209f485 (diff)
Fix links in notes.
-rw-r--r--notes/250210-booleans.md6
-rw-r--r--notes/250210-immutable.md4
-rw-r--r--notes/250210-nan.md6
-rw-r--r--notes/250210-serialize.md3
-rw-r--r--notes/250210-symbols.md2
-rw-r--r--notes/250219-reader.md18
-rw-r--r--notes/250228-macros.md4
-rw-r--r--notes/250329-strings.md30
-rw-r--r--notes/250920-goals.md2
9 files changed, 43 insertions, 32 deletions
diff --git a/notes/250210-booleans.md b/notes/250210-booleans.md
index b26e101..6ee8b2b 100644
--- a/notes/250210-booleans.md
+++ b/notes/250210-booleans.md
@@ -29,6 +29,6 @@ separate from false, but then refused to go all the way and decided to
allow non-Boolean values to function as Booleans anyway.
Of course, performing a type-check on every single conditional may
-incur a serious performance penalty. If so, then the same flag that
-determines [whether returned values can be ignored](strict-mode.html)
-may also determine whether non-Booleans can be coerced into Booleans.
+incur a serious performance penalty. If so, then some kind of [strict
+mode](250210-strict-mode.html) flag may determine whether non-Booleans
+can be coerced into Booleans.
diff --git a/notes/250210-immutable.md b/notes/250210-immutable.md
index fddc0d8..e6e8d1e 100644
--- a/notes/250210-immutable.md
+++ b/notes/250210-immutable.md
@@ -26,8 +26,8 @@ get the value, we call `get`.
I've not yet made up my mind on whether pairs should be immutable by
default, but they probably should. Strings, as also mentioned in
-[symbols](symbols.html), will be immutable, since string constants
-will be the same thing as symbols.
+[symbols](250210-symbols.html), will be immutable, since string
+constants will be the same thing as symbols.
## Late additions
diff --git a/notes/250210-nan.md b/notes/250210-nan.md
index 2824237..107bdf7 100644
--- a/notes/250210-nan.md
+++ b/notes/250210-nan.md
@@ -408,9 +408,9 @@ missing, so we automatically avoid the forbidden zero payload.
### What the heck is a "short string"?
-Remember that [strings are immutable](symbols.html) in Zisp. This allows us
-to use an amazing optimization where short strings can be represented as
-immediate values.
+Remember that [strings are immutable](250210-symbols.html) in Zisp. This
+allows us to use an amazing optimization where short strings can be
+represented as immediate values.
We can't get to 56 bits (7 bytes), but 48 bits (6 bytes) fits perfectly into
our payload! So any interned string (equivalent to a Scheme symbol) in Zisp
diff --git a/notes/250210-serialize.md b/notes/250210-serialize.md
index 3def658..bed28c8 100644
--- a/notes/250210-serialize.md
+++ b/notes/250210-serialize.md
@@ -2,7 +2,8 @@
_2025 February_
-Let's look at the code mentioned in [compilation](compile.html) again:
+Let's look at the code mentioned in [compilation](250210-compile.html)
+again:
```scheme
diff --git a/notes/250210-symbols.md b/notes/250210-symbols.md
index 71201a0..eeb516f 100644
--- a/notes/250210-symbols.md
+++ b/notes/250210-symbols.md
@@ -111,4 +111,4 @@ the NaN-packing strategy to put a tag on "short strings" which are our
*This got too long and off-topic so it continues here:*
-[Reader? Decoder? I barely know 'er!](reader.html)
+[Reader? Decoder? I barely know 'er!](250219-reader.html)
diff --git a/notes/250219-reader.md b/notes/250219-reader.md
index 6e604f4..de71b4e 100644
--- a/notes/250219-reader.md
+++ b/notes/250219-reader.md
@@ -5,15 +5,15 @@ _2025 February_
*This started from an expansion to the following, then became its own
article:*
-[Symbols are strings are symbols](symbols.html)
+[Symbols are strings are symbols](250210-symbols.html)
OK but hear me out... What if there were different reader modes, for
code and (pure) data?
-I want Zisp to have various neat [syntactic extensions](sugar.html)
-for programming purposes anyway, like the lambda shorthand, and these
-shouldn't apply to configuration files, either. (Although they seem
-unlikely to occur by accident.)
+I want Zisp to have various neat syntactic extensions (see [syntax
+sugar](250210-sugar.html) note) for programming purposes anyway, like
+the lambda shorthand, and these shouldn't apply to configuration
+files, either. (Although they seem unlikely to occur by accident.)
So what if the transform from string literal to quoted string literal
only occurred in code reading mode?
@@ -154,7 +154,7 @@ Typical pipeline when reading and evaluating code:
rune calls to produce values
i.e. desugars code & compiles code
-Reading in a [serialized program](compile.html):
+Reading in a [serialized program](250210-compile.html):
data-file --[data-reader]--> data --[eval]--> values
^^^^
@@ -284,8 +284,8 @@ The following exist:
1. Decoder: Calls decoders for runes in data, to yield values.
- 2. Evaluator: [Executes aka compiles](compile.html) decoded values
- into other values.[*]
+ 2. Evaluator: [Executes aka compiles](250210-compile.html) decoded
+ values into other values.[*]
3. Reverse in-memory transformers:
@@ -406,7 +406,7 @@ to allow arbitrary code execution to happen just when reading a data
file and decoding it. So something exceptional would need to happen
for this to work. Or maybe not.
-Remember that [compilation is execution](compile.html) in Zisp,
+Remember that [compilation is execution](250210-compile.html) in Zisp,
meaning that compiling a file looks like this in pseudo-Scheme:
(define env (null-environment)) ;start out empty
diff --git a/notes/250228-macros.md b/notes/250228-macros.md
index cb06e07..d9c946c 100644
--- a/notes/250228-macros.md
+++ b/notes/250228-macros.md
@@ -2,8 +2,8 @@
_2025 February_
-I've written about the [parser/decoder dualism](reader.html) in a
-previous article. Long story short, the parser takes care of syntax
+I've written about the [parser/decoder dualism](250219-reader.html) in
+a previous article. Long story short, the parser takes care of syntax
sugar, like turning `#(...)` into `(#HASH ...)`, and the decoder takes
care of turning that into a vector or whatever.
diff --git a/notes/250329-strings.md b/notes/250329-strings.md
index 6f01944..43cb869 100644
--- a/notes/250329-strings.md
+++ b/notes/250329-strings.md
@@ -1,14 +1,16 @@
# Symbols and strings, revisited
-My [original plan](symbols.html) was to make strings and symbols one
-and the same. Then I realized this introduced ambiguity between bare
-strings meant as identifiers, and quoted strings representing a string
-literal in code.
+_2025 March_
+
+My [original plan](250210-symbols.html) was to make strings and
+symbols one and the same. Then I realized this introduced ambiguity
+between bare strings meant as identifiers, and quoted strings
+representing a string literal in code.
After a bunch of back-and-forth, I came up with the idea of the Zisp
-[decoder](reader.html) with which I'm very happy overall, but I still
-decided to ditch the idea of using an intermediate representation for
-quoted string literals like `(#STRING . "foo")` after all.
+[decoder](250219-reader.html) with which I'm very happy overall, but I
+still decided to ditch the idea of using a representation for quoted
+string literals like `(#STRING . "foo")` after all.
The idea was that the reader would have a data mode and a code mode
and that quoted strings would become `(#STRING . "foo")` or such in
@@ -25,9 +27,9 @@ So, ultimately I've decided to simply make quoted strings a proper
sub-type of strings. (Or make symbols a sub-type of strings; which
ever way you want to look at it.)
-Also, my [NaN-packing strategy](nan.html) has so much extra room that
-I've decided to put up-to-6-byte strings into NaNs as an optimization
-hack, and this applies to both quoted and bare strings.
+Also, my [NaN-packing strategy](250210-nan.html) has so much extra
+room that I've decided to put up-to-6-byte strings into NaNs as an
+optimization hack, and this applies to both quoted and bare strings.
So we have two different string types, and two different in-memory
representations for each. Let's summarize and give them names:
@@ -55,3 +57,11 @@ Here's how the parser uses these types:
* Quoted string of more than 6 bytes? Uninterned string.
*** WIP ***
+
+_2026 January_
+
+Currently, the Zisp parser does, after all, conflate strings and
+symbols, with string literals simply being quoted symbols. There
+aren't going to be separate data types because it's unnecessary after
+all. The syntax `"foo bar"` parses into `(#QUOTE . |foo bar|)` and
+I'll leave it at that.
diff --git a/notes/250920-goals.md b/notes/250920-goals.md
index 559609b..0acdfa5 100644
--- a/notes/250920-goals.md
+++ b/notes/250920-goals.md
@@ -15,7 +15,7 @@ So, there's what I mean by that:
comparable to say glibc + libgcc. (Not like Java, C#, Python,
Racket, etc. that need end-users to have a runtime installed that
takes dozens if not hundreds of MBs of disk space. Actually, dozens
- may be necessary; see: [Using libgccjit?](libgccjit.html).)
+ may be necessary; see: [Using libgccjit?](250920-libgccjit.html).)
- Code can be compiled to provide relatively high performance. When
static types are used throughout, it should produce code whose