import { compareTypes } from "../lib/compare/type.js"; import { ModuleStd } from "../lib/stdlib.js"; import { emptyDict, get, set } from "../lib/structures/dict.js"; import { emptySet, add } from "../lib/structures/set.js"; import { makeCompareFn } from "../lib/compare/dynamic.js" import { Type } from "../lib/primitives/primitive_types.js"; console.log(ModuleStd); const addEntry = dict => i => t => { const setOfInstances = get(dict)(t) || emptySet(makeCompareFn(t)); return set(dict)(t)(add(setOfInstances)(i)); } const typeDict = ModuleStd.reduce((typeDict, {i, t}) => { try { // add instance to type: return addEntry( addEntry(typeDict)(i)(t) )(t)(Type); } catch (e) { console.log('warning:',e.message); return typeDict; } }, emptyDict(compareTypes)); console.log(typeDict);