// to break up dependency cycles, primitive types are defined in their own JS module import { makeTypeConstructor } from "../type_constructor.js"; import { constructSymbol } from "./symbol.js"; export const Int = makeTypeConstructor(constructSymbol('Int'), 0); export const Bool = makeTypeConstructor(constructSymbol('Bool'), 0); export const Double = makeTypeConstructor(constructSymbol('Double'), 0); export const Byte = makeTypeConstructor(constructSymbol('Byte'), 0); export const Char = makeTypeConstructor(constructSymbol('Char'), 0); // Unit type has only 1 instance, the empty tuple. export const Unit = makeTypeConstructor(constructSymbol('Unit'), 0); export const SymbolT = makeTypeConstructor(constructSymbol('Symbol'), 0); export const Type = makeTypeConstructor(constructSymbol('Type'), 0);