(broken) use lowercase names for symbols

This commit is contained in:
Joeri Exelmans 2025-05-10 09:19:40 +02:00
parent 639d70afa5
commit 1780920438
5 changed files with 55 additions and 57 deletions

View file

@ -1,5 +1,5 @@
import { getInst, getType } from "../primitives/dynamic.js";
import { SymbolBool, SymbolBottom, SymbolByte, SymbolChar, SymbolDouble, SymbolDynamic, SymbolInt, SymbolUUID, SymbolType, SymbolUnit, SymbolOrdering } from "../primitives/primitive_types.js";
import { symbolBool, symbolBottom, symbolByte, symbolChar, symbolDouble, symbolDynamic, symbolInt, symbolUUID, symbolType, symbolUnit, symbolOrdering } from "../primitives/primitive_types.js";
import { UNBOUND_SYMBOLS } from "../primitives/typevars.js";
import { symbolDictIterator } from "../structures/dict.types.js";
import { symbolSetIterator } from "../structures/set.types.js";
@ -16,18 +16,18 @@ export const compareDynamic = x => y =>
const cannotCompareTypeVarInstances = _ => _ => { throw new Error("Cannot compare instance of type variables"); }
const typeSymbolToCmp = new Map([
[SymbolInt , compareInts ],
[SymbolBool , compareBools ],
[SymbolDouble , compareDoubles ],
[SymbolByte , compareDoubles ],
[SymbolChar , compareStrings ],
[SymbolUnit , compareUnits ],
[SymbolBottom , _ => _ => { throw new Error("Bottom!"); }],
[SymbolUUID , compareSymbols ],
[symbolInt , compareInts ],
[symbolBool , compareBools ],
[symbolDouble , compareDoubles ],
[symbolByte , compareDoubles ],
[symbolChar , compareStrings ],
[symbolUnit , compareUnits ],
[symbolBottom , _ => _ => { throw new Error("Bottom!"); }],
[symbolUUID , compareSymbols ],
// [SymbolGenericType, ?] TODO
[SymbolType , compareTypes ],
[SymbolDynamic , compareDynamic ],
[SymbolOrdering, compareOrderings],
[symbolType , compareTypes ],
[symbolDynamic , compareDynamic ],
[symbolOrdering, compareOrderings],
// these functions take extra comparison callbacks:
[symbolFunction , compareFunctions ],

View file

@ -2,41 +2,39 @@
import { makeTypeConstructor } from "../meta/type_constructor.js";
export const SymbolInt = "Int__02a884563f7d480bb14c09be640dfe7a";
export const SymbolBool = "Bool__d64c4865bead40439dad62727aaaac2d";
export const SymbolDouble = "Double__be70f3c8f53f4419a7866d106faae091";
export const SymbolByte = "Byte__bf9e8453cd554e81971880ba33dc9f27";
export const SymbolChar = "Char__e47159519d3345119336b751fc8da1de";
export const SymbolUnit = "Unit__a70ca021c32a4036a594d332aedfb029";
export const SymbolBottom = "⊥__95beece951bc457781be8c5481d35dcc";
export const SymbolUUID = "UUID__f67c077430e04e4fa40ed2e2b2a3040d";
export const SymbolType = "Type__fdbea309d66f49b483b0dd4ceb785f7d";
export const SymbolTop = "__38709c3c0039468782103256d4730d1f";
export const SymbolDynamic = "Dynamic__3c16c415dba94228ada37dc9d446f54f";
export const symbolInt = "Int__02a884563f7d480bb14c09be640dfe7a";
export const symbolBool = "Bool__d64c4865bead40439dad62727aaaac2d";
export const symbolDouble = "Double__be70f3c8f53f4419a7866d106faae091";
export const symbolByte = "Byte__bf9e8453cd554e81971880ba33dc9f27";
export const symbolChar = "Char__e47159519d3345119336b751fc8da1de";
export const symbolUnit = "Unit__a70ca021c32a4036a594d332aedfb029";
export const symbolBottom = "⊥__95beece951bc457781be8c5481d35dcc";
export const symbolUUID = "UUID__f67c077430e04e4fa40ed2e2b2a3040d";
export const symbolType = "Type__fdbea309d66f49b483b0dd4ceb785f7d";
export const symbolTop = "__38709c3c0039468782103256d4730d1f";
export const symbolDynamic = "Dynamic__3c16c415dba94228ada37dc9d446f54f";
export const symbolOrdering = "Ordering__a11578cc83352023f16ffa2d060c52c2";
export const SymbolOrdering = "Ordering__a11578cc83352023f16ffa2d060c52c2";
export const Int = makeTypeConstructor(SymbolInt)(0);
export const Bool = makeTypeConstructor(SymbolBool)(0);
export const Double = makeTypeConstructor(SymbolDouble)(0);
export const Byte = makeTypeConstructor(SymbolByte)(0);
export const Char = makeTypeConstructor(SymbolChar)(0);
export const Int = makeTypeConstructor(symbolInt)(0);
export const Bool = makeTypeConstructor(symbolBool)(0);
export const Double = makeTypeConstructor(symbolDouble)(0);
export const Byte = makeTypeConstructor(symbolByte)(0);
export const Char = makeTypeConstructor(symbolChar)(0);
// Unit type has only 1 instance, the empty tuple.
export const Unit = makeTypeConstructor(SymbolUnit)(0);
export const Unit = makeTypeConstructor(symbolUnit)(0);
// Bottom type has no instances.
export const Bottom = makeTypeConstructor(SymbolBottom)(0);
export const Bottom = makeTypeConstructor(symbolBottom)(0);
export const UUID = makeTypeConstructor(SymbolUUID)(0);
export const UUID = makeTypeConstructor(symbolUUID)(0);
// Types are typed by Top
export const Type = makeTypeConstructor(SymbolType)(0);
export const Type = makeTypeConstructor(symbolType)(0);
// Everything is typed by Top
export const Top = makeTypeConstructor(SymbolTop)(0);// A type-link, connecting a value to its Type.
export const Top = makeTypeConstructor(symbolTop)(0);// A type-link, connecting a value to its Type.
export const Dynamic = makeTypeConstructor(SymbolDynamic)(0);
export const Dynamic = makeTypeConstructor(symbolDynamic)(0);
export const Ordering = makeTypeConstructor(SymbolOrdering)(0);
export const Ordering = makeTypeConstructor(symbolOrdering)(0);

View file

@ -1,19 +1,19 @@
import { newDynamic } from "./dynamic.js";
import { SymbolInt, UUID, SymbolBool, SymbolDouble, SymbolByte, SymbolChar, SymbolUnit, SymbolBottom, SymbolUUID, SymbolType, SymbolTop, Type, Int, Bool, Double, Byte, Char, Unit, Bottom, Top, SymbolDynamic, Dynamic, SymbolOrdering, Ordering } from "./primitive_types.js";
import { symbolInt, UUID, symbolBool, symbolDouble, symbolByte, symbolChar, symbolUnit, symbolBottom, symbolUUID, symbolType, symbolTop, Type, Int, Bool, Double, Byte, Char, Unit, Bottom, Top, symbolDynamic, Dynamic, symbolOrdering, Ordering } from "./primitive_types.js";
export const ModulePrimitiveSymbols = [
["SymbolInt" , newDynamic(SymbolInt )(UUID)],
["SymbolBool" , newDynamic(SymbolBool )(UUID)],
["SymbolDouble" , newDynamic(SymbolDouble )(UUID)],
["SymbolByte" , newDynamic(SymbolByte )(UUID)],
["SymbolChar" , newDynamic(SymbolChar )(UUID)],
["SymbolUnit" , newDynamic(SymbolUnit )(UUID)],
["SymbolBottom" , newDynamic(SymbolBottom )(UUID)],
["SymbolUUID" , newDynamic(SymbolUUID )(UUID)],
["SymbolType" , newDynamic(SymbolType )(UUID)],
["SymbolTop" , newDynamic(SymbolTop )(UUID)],
["SymbolDynamic" , newDynamic(SymbolDynamic )(UUID)],
["SymbolOrdering", newDynamic(SymbolOrdering)(UUID)],
["symbolInt" , newDynamic(symbolInt )(UUID)],
["symbolBool" , newDynamic(symbolBool )(UUID)],
["symbolDouble" , newDynamic(symbolDouble )(UUID)],
["symbolByte" , newDynamic(symbolByte )(UUID)],
["symbolChar" , newDynamic(symbolChar )(UUID)],
["symbolUnit" , newDynamic(symbolUnit )(UUID)],
["symbolBottom" , newDynamic(symbolBottom )(UUID)],
["symbolUUID" , newDynamic(symbolUUID )(UUID)],
["symbolType" , newDynamic(symbolType )(UUID)],
["symbolTop" , newDynamic(symbolTop )(UUID)],
["symbolDynamic" , newDynamic(symbolDynamic )(UUID)],
["symbolOrdering", newDynamic(symbolOrdering)(UUID)],
];
export const ModulePrimitiveTypes = [

View file

@ -36,10 +36,10 @@ export const ModuleStd = [
...ModuleUnit,
// Operations on Structures
...ModuleDict,
...ModuleList,
...ModuleDict.map(([name, dynamic]) => ["dict."+name, dynamic]),
...ModuleList.map(([name, dynamic]) => ["list."+name, dynamic]),
...ModuleProduct,
...ModuleSet,
...ModuleSet.map(([name, dynamic]) => ["set."+name, dynamic]),
...ModuleSum,
// Comparison

View file

@ -5,7 +5,7 @@ import { match, newLeft, newRight } from "./sum.js";
const mkType = getDefaultTypeParser();
export const ModuleSum = [
["newLeft" , newDynamic(newLeft )(mkType("a -> (a + b)" ))],
["newRight" , newDynamic(newRight )(mkType("b -> (a + b)" ))],
["match" , newDynamic(match )(mkType("(a + b) -> (a -> c) -> (b -> c) -> c"))],
["newLeft" , newDynamic(newLeft )(mkType("a -> (a + b)" ))],
["newRight", newDynamic(newRight)(mkType("b -> (a + b)" ))],
["match" , newDynamic(match )(mkType("(a + b) -> (a -> c) -> (b -> c) -> c"))],
];