Types
AbySS values borrow names from arcane lore while mapping cleanly to familiar runtime primitives.
Primitive Runes
Section titled “Primitive Runes”| Rune | Meaning |
|---|---|
arcana |
Integer values; think Tarot numerals anchoring discrete counts. |
aether |
Floating-point numbers that capture fluid, continuous quantities. |
rune |
UTF-8 strings, channeling the idea that inscriptions carry power. |
omen |
Boolean values with boon (true) and hex (false). |
abyss |
The void type returned by spells that do not produce a value. |
scroll |
Ordered collections mixing any elements. |
lexicon |
Rune-keyed dictionaries for structured lookups. |
materia |
Dynamically typed slot able to hold any runtime value. |
glyph |
Compile-time token that names a type (used by casts such as .transmute(glyph)). |
artifact |
User-defined struct with typed fields and optional methods. |
Example
Section titled “Example”forge x: arcana = 10;forge pi: aether = 3.14;forge message: rune = "Hello, AbySS";forge is_active: omen = boon;forge spellbook: scroll = [1, boon, "sigil"];forge ledger: lexicon = {"sun": 1, "moon": 2};forge essence: materia = 99;Rune Methods
Section titled “Rune Methods”Runes carry their own rituals for everyday text work. All of them return new values — runes are never mutated in place.
rune.upper()/rune.lower()→ case-shifted copy.rune.trim()→ copy with surrounding whitespace removed.rune.tally()→ character count asarcana(Unicode characters, mirroringscroll.tally()’s element count).rune.contains(needle)→omen.rune.replace(from, to)→ copy with everyfromreplaced (the search rune must be non-empty).rune.split(separator)→scrollof runes (the separator must be non-empty).
forge chant: rune = " Fiat Lux ";forge clean: rune = chant.trim();
unveil(clean.upper());unveil(clean.lower());unveil(clean.tally().transmute(rune));unveil(clean.contains("Lux"));unveil(clean.replace("Lux", "Nox"));
forge parts: scroll = "boon,hex,abyss".split(",");unveil(parts[1]);FIAT LUXfiat lux8boonFiat NoxhexEach rune name hints at its intent: glyph tokens are passed into conversions, artifact declarations craft reusable records, and materia absorbs values whose final shape is still unknown.