27 lines
821 B
JavaScript
27 lines
821 B
JavaScript
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);
|