-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
68 lines (56 loc) · 1.68 KB
/
index.ts
File metadata and controls
68 lines (56 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// evolution/index.ts
// Event 020: Algebra Evolution
export {
composeAlgebras,
composeThree,
withTransform,
canCompose,
whyCannotCompose,
} from './algebraComposer.js';
export {
withFinalization,
computeFinalized,
canParallelizeFinalized,
} from './algebraFinalized.js';
export type { FinalizedAlgebra } from './algebraFinalized.js';
export {
AlgebraRegistry,
globalRegistry,
} from './algebraRegistry.js';
/**
* Initialize global registry with base algebras
*/
import { classifyAlgebra } from '../meta/algebraClassifier.js';
import { algebras } from '../domains/fold.js';
import { globalRegistry } from './algebraRegistry.js';
export function initializeBaseAlgebras(): void {
// Only initialize if registry is empty
if (globalRegistry.has('sum')) {
return; // Already initialized
}
// Classify and register base algebras
globalRegistry.register('sum', classifyAlgebra('sum', algebras.sum, {
identityCandidates: [0],
numSamples: 100,
}), true);
globalRegistry.register('product', classifyAlgebra('product', algebras.product, {
identityCandidates: [1],
numSamples: 100,
}), true);
globalRegistry.register('max', classifyAlgebra('max', algebras.max, {
identityCandidates: [-Infinity],
numSamples: 100,
}), true);
globalRegistry.register('min', classifyAlgebra('min', algebras.min, {
identityCandidates: [Infinity],
numSamples: 100,
}), true);
globalRegistry.register('count', classifyAlgebra('count', algebras.count, {
identityCandidates: [0],
numSamples: 100,
}), true);
globalRegistry.register('concat', classifyAlgebra('concat', algebras.concat, {
identityCandidates: [''],
numSamples: 100,
}), true);
}