Skip to content

Commit 15bc3c1

Browse files
committed
createConceptSet
1 parent 2a51b9e commit 15bc3c1

File tree

5 files changed

+35
-4
lines changed

5 files changed

+35
-4
lines changed

TODO.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# concept
2+
3+
`conceptJoin`
4+
`conceptMeet`
5+
16
# context
27

38
`generateConcepts(context)`

src/concept/conceptEqual.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { setEqual } from "../utils/Set.js"
2+
import type { Concept } from "./Concept.js"
3+
4+
export function conceptEqual(x: Concept, y: Concept): boolean {
5+
if (x.context !== y.context) return false
6+
return setEqual(x.extent, y.extent)
7+
}

src/concept/createConceptSet.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { QuotientSet } from "../utils/QuotientSet.js"
2+
import type { Concept } from "./Concept.js"
3+
import { conceptEqual } from "./conceptEqual.js"
4+
5+
export function createConceptSet(): QuotientSet<Concept> {
6+
return new QuotientSet({ equal: conceptEqual })
7+
}

src/concept/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ export * from "./conceptFromAttributes.js"
55
export * from "./conceptFromEntities.js"
66
export * from "./isExtent.js"
77
export * from "./isIntent.js"
8+
export * from "./conceptEqual.js"
9+
export * from "./createConceptSet.js"

src/context/generateConcepts.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,18 @@
1-
import type { Concept } from "../concept/index.js"
1+
import {
2+
conceptFromEntities,
3+
createConceptSet,
4+
type Concept,
5+
} from "../concept/index.js"
26
import type { Context } from "./index.js"
37

48
export function generateConcepts(context: Context): Array<Concept> {
5-
const targets: Array<Concept> = []
6-
const results: Array<Concept> = []
7-
return results
9+
const targets = createConceptSet()
10+
const results = createConceptSet()
11+
for (const entity of context.entities) {
12+
const entityConcept = conceptFromEntities(context, [entity])
13+
targets.add(entityConcept)
14+
results.add(entityConcept)
15+
}
16+
17+
return results.representatives
818
}

0 commit comments

Comments
 (0)