dope2/primitives/types.js

17 lines
829 B
JavaScript

// 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);