30 lines
1 KiB
JavaScript
30 lines
1 KiB
JavaScript
import { fnType } from "../metacircular.js";
|
|
import {Type, Function} from "../metacircular.js";
|
|
|
|
import {Bool, Int} from "./symbols.js";
|
|
|
|
export const addInt = x => y => x + y;
|
|
export const mulInt = x => y => x * y;
|
|
export const eqInt = x => y => x === y;
|
|
|
|
const Int_to_Int = fnType({in: Int, out: Int });
|
|
const Int_to_Bool = fnType({in: Int, out: Bool});
|
|
export const Int_to_Int_to_Int = fnType({in: Int, out: Int_to_Int});
|
|
export const Int_to_Int_to_Bool = fnType({in: Int, out: Int_to_Bool});
|
|
|
|
const serialize = x => x.toString();
|
|
const deserialize = str => BigInt(str);
|
|
|
|
|
|
export const ModuleInt = {l:[
|
|
{i: Int , t: Type },
|
|
|
|
{i: Int_to_Int_to_Int , t: Function },
|
|
{i: Int_to_Int_to_Bool , t: Function },
|
|
{i: Int_to_Int , t: Function },
|
|
{i: Int_to_Bool , t: Function },
|
|
|
|
{i: addInt , t: Int_to_Int_to_Int },
|
|
{i: mulInt , t: Int_to_Int_to_Int },
|
|
{i: eqInt , t: Int_to_Int_to_Bool },
|
|
]};
|