diff options
| author | Taylan Kammer <taylan.kammer@gmail.com> | 2026-01-03 01:41:45 +0100 |
|---|---|---|
| committer | Taylan Kammer <taylan.kammer@gmail.com> | 2026-01-03 01:41:45 +0100 |
| commit | 067e9a04dbce2b36d8094ab3aa7dc0c934d9486c (patch) | |
| tree | 97488b3cc0d007d8451184698e548bf8b9978d06 /notes | |
| parent | 8ceb82e3f8105abb7d17f5ad82184a75b209f485 (diff) | |
Fix links in notes.
Diffstat (limited to 'notes')
| -rw-r--r-- | notes/250210-booleans.md | 6 | ||||
| -rw-r--r-- | notes/250210-immutable.md | 4 | ||||
| -rw-r--r-- | notes/250210-nan.md | 6 | ||||
| -rw-r--r-- | notes/250210-serialize.md | 3 | ||||
| -rw-r--r-- | notes/250210-symbols.md | 2 | ||||
| -rw-r--r-- | notes/250219-reader.md | 18 | ||||
| -rw-r--r-- | notes/250228-macros.md | 4 | ||||
| -rw-r--r-- | notes/250329-strings.md | 30 | ||||
| -rw-r--r-- | notes/250920-goals.md | 2 |
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 |
