diff --git a/TODO.md b/TODO.md index 11da748..f15156f 100644 --- a/TODO.md +++ b/TODO.md @@ -6,10 +6,7 @@ # concept -`conceptFromEntities` -- 构造 immutable 的 `Concept` -`conceptFromAttributes` -- 构造 immutable 的 `Concept` -`conceptFromEntity` -- 构造 immutable 的 `Concept` -- 有更好的名字吗? -`conceptFromAttribute` -- 构造 immutable 的 `Concept` -- 有更好的名字吗? +`conceptFromAttributes` # context diff --git a/src/concept/conceptFromAttributes.ts b/src/concept/conceptFromAttributes.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/concept/conceptFromEntities.ts b/src/concept/conceptFromEntities.ts new file mode 100644 index 0000000..af60f11 --- /dev/null +++ b/src/concept/conceptFromEntities.ts @@ -0,0 +1,23 @@ +import { + commonAttributes, + commonEntities, + type Context, + type Entity, +} from "../context/index.js" +import type { Concept } from "./Concept.js" + +export function conceptFromEntities( + context: Context, + entities: ReadonlySet | ReadonlyArray, +): Concept { + entities = new Set(entities) + + const intent = commonAttributes(context, entities) + const extent = commonEntities(context, intent) + + return { + context, + extent, + intent, + } +} diff --git a/src/concept/index.ts b/src/concept/index.ts index 36ec376..5f67145 100644 --- a/src/concept/index.ts +++ b/src/concept/index.ts @@ -1,5 +1,7 @@ export * from "./closureAttributes.js" export * from "./closureEntities.js" export * from "./Concept.js" +export * from "./conceptFromAttributes.js" +export * from "./conceptFromEntities.js" export * from "./isExtent.js" export * from "./isIntent.js"