diff options
| author | 2026-02-23 09:38:47 +0330 | |
|---|---|---|
| committer | 2026-02-23 09:38:47 +0330 | |
| commit | c2db7bac1425ef1964e7a0682047787343bfda27 (patch) | |
| tree | 3fe9ba2d7ddb8904aa3fe4e1fb87de50aa422feb | |
| parent | frontend changes (diff) | |
some&all + symbol shortcuts
| -rw-r--r-- | index.html | 28 | ||||
| -rw-r--r-- | symbols.txt | 13 | ||||
| -rw-r--r-- | tempo.md | 45 |
3 files changed, 74 insertions, 12 deletions
@@ -151,6 +151,7 @@ const text = await response.text() const symbols = {} + const symbolAliases = {} for (const line of text.split('\n')) { const trimmed = line.trim() @@ -161,13 +162,15 @@ const symbol = parts[0] const name = parts.slice(1).join(' ') symbols[name] = symbol + if (!symbolAliases[symbol]) symbolAliases[symbol] = [] + symbolAliases[symbol].push(name) } } - return symbols + return { symbols, symbolAliases } } catch (err) { console.warn('failed to load symbols.txt:', err) - return {} + return { symbols: {}, symbolAliases: {} } } } @@ -285,7 +288,7 @@ render() { let html = '' - + let tocItems = [] for (const token of this.tokens) { if (token.type === 'definition') { @@ -298,9 +301,9 @@ } else { name = line } - + const actualName = token.description.split('\n')[0].replace(/:/g, '') - + if (this.reverseSymbols[name]) { tocItems.push({ symbol: name, @@ -420,7 +423,7 @@ } } - function validateSymbols(text, symbols) { + function validateSymbols(text, symbols, symbolAliases) { const definedSymbols = new Set() const missing = new Map() const lines = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n') @@ -447,11 +450,14 @@ while ((match = usagePattern.exec(line)) !== null) { const name = match[1] if (definedSymbols.has(name)) continue - if (symbols[name] && definedSymbols.has(symbols[name])) continue - if (!missing.has(name)) { - missing.set(name, []) + const sym = symbols[name] + if (sym) { + const aliases = symbolAliases[sym] || [] + if (aliases.some(alias => definedSymbols.has(alias))) continue } + + if (!missing.has(name)) missing.set(name, []) missing.get(name).push(lineNumber) } }) @@ -472,12 +478,12 @@ async function loadMarkdown() { try { - const symbols = await loadSymbols() + const { symbols, symbolAliases } = await loadSymbols() let response = await fetch('tempo.md') if (response.status !== 200) response = await fetch('tempo.md.html') let text = await response.text() - validateSymbols(text, symbols) + validateSymbols(text, symbols, symbolAliases) text = text.replace(/((^|\n)<!> *)/g, (e) => e.replace(/<!> */g, '')) text = applySymbols(text, symbols) diff --git a/symbols.txt b/symbols.txt index a72ebb1..96b6f88 100644 --- a/symbols.txt +++ b/symbols.txt @@ -22,6 +22,7 @@ 3 three < before | separate +^ inside ! ??? @ change # persistence @@ -55,4 +56,14 @@ H aH He aHe ɸ hypothetical ɸ hypo -u you
\ No newline at end of file +u you +‖ between +⊃ context +⊃ ctx +§ nuos +? question +? q +; answer +; ans +ɀ all +ᓱ some
\ No newline at end of file @@ -119,6 +119,7 @@ denotes that there is no such other object equating this one. def \static\ `[x] x>x` (\static\ A) ^^ static: denotes an object that never changes. that is, it is its own consequence. +an alternative definition would be `[x] @x=x`, claiming that an object's change is itself. def \id\ `[x y] A=x A\prop\y \unique\A \static\A` (A \id\ B) ^^ id: @@ -153,10 +154,19 @@ def < `[x y] y>x + x\neq\y` (A < B) ^^ before: B > A & A \neq\ B, denotes B comes after A and they are not the same. +def \between\ `[a x y] x\neq\f f\neq\y x>f f>y` (A \between\ B C) +^^ between: +shows that an event takes place between two other events. + def | `[x] A=. A<x A` (| B) ^^ separate: the object(s) preceeding the combination of an input object. breaks down an input into its creating parts. using this on a static atomic object will return either itself. +def ^ `[x y] |y=.+x` (A ^ B) +^^ inside: +shows that an axiom is part of another one. +alternative definition: `[x y] (.+x)=y` + def ! `.*0` ^^ ???: an indescribable, unknown, and paradoxical axiom. @@ -209,6 +219,8 @@ def \nand\ `[x y] - x&y` (A \nand\ B) ^^ nand: logical NAND. this expression is proven to be functionally complete, meaning you can build any conceivable logical contraption out of this. for the sake of originality though, we will not be using this to scaffold a rule 110 emulator. +i will not be defining other logical operators here, they are trivial. + def \speaker\ `A=. . < \me\x A` (\speaker\ B) ^^ speaker: what came before "me"? the originator of the thought, of course. @@ -291,11 +303,44 @@ def \you\ `A=.\type\\listener\ B=\axiom\. \speaker\>B \hypo\(B>A A\comprehend\) indicates a listener that can hypothetically comprehend an axiom created by the speaker. the target of the speaker's words. +def \context\ `[x] A=.\type\(\me\\axiom\) !\comp\x \comp\(x+A) A` (\context\ B) +^^ context: +an axiom, without which, the input axiom cannot be comprehended, but with it, the listener can comprehend the input axiom. + +def \nuos\ `[x] A=.\type\(\me\\world\) B=x B\type\\mind\ A^B A` (\nuos\ C) +^^ nuos: +the internal world, context and logic of a specific mind. defines a world which exists inside of another. + +def ? `A=.\type\\axiom\ B=.\type\\axiom\ B>A (!((\speaker\B)\comp\))>B B` +^^ question: +an axiom, which originates from a void of comprehension, and leads to another axiom. + +def ; `A=.\type\\axiom\ B=.\type\\axiom\ B>A (!((\speaker\B)\comp\))>B A` +^^ answer: +the axiom created from the void of comprehension. + +**note to all**: do not try to define love. poetry is not definition. + +def \all\ `[x y] -(A=.\type\x -(A^y))` (\all\ B C) +^^ all: +for all axioms of type B, every one of them exists inside C. + +def \some\ `[x y] -(\all\ x -y)` (\some\ A B) +^^ some: +there exists an axiom of type A which is inside of B. +alternative definition: `[x y] A=.\type\x A^y` + ## update log // Timestamp: future - more coming soon. +// Timestamp: 2026-02-23 09:37:18 UTC+3:30 +- added symbols \some\ and \all\. + +// Timestamp: 2026-02-22 13:15:30 UTC+3:30 +- added symbols \between\, \ctx\ and \nuos\. + // Timestamp: 2026-01-03 16:29:56 UTC+3:30 - added symbols \hypo\ and \you\. |
