import { assign } from "../generics/generics.js"; import { makeGeneric } from "../generics/generics.js"; import { fnType } from "../metacircular.js"; import { Double, Int } from "../primitives/symbols.js"; import { numDictType } from "./num_type.js"; const square = numDict => x => getMul(numDict)(x)(x); const squareFnType = makeGeneric(a => fnType({ in: numDictType(a), out: fnType({ in: a, out: a, }), })); // should be: Int -> Int console.log(assign(squareFnType, makeGeneric(() => numDictType(Int)))); // should be: Double -> Double console.log(assign(squareFnType, makeGeneric(() => numDictType(Double))));