Skip to content

Commit

Permalink
extract beliefMergeMany
Browse files Browse the repository at this point in the history
  • Loading branch information
xieyuheng committed Sep 17, 2024
1 parent 948c88e commit 80f279f
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 10 deletions.
2 changes: 0 additions & 2 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
extract `beliefMergeMany`

# 4.4 Dependencies Improve Search

> https://github.com/cicada-lang/propagator/issues/4
Expand Down
12 changes: 4 additions & 8 deletions src/belief-system/beliefMergeManyStillBelieved.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import type { Belief } from "../belief/Belief.js"
import { merge } from "../merge/merge.js"
import { type Nothing, nothing } from "../nothing/Nothing.js"
import { beliefMergeMany } from "../belief/index.js"
import { type Nothing } from "../nothing/Nothing.js"
import { isStillBelieved } from "./isStillBelieved.js"

// The procedure `strongest` finds the most informative consequence
// This function finds the most informative consequence
// of the current worldview. It does this by using merge to combine
// all of the currently believed beliefs.
// 注意,这里的 "most informative" 又是就 merge 而言的了,
Expand All @@ -12,9 +12,5 @@ import { isStillBelieved } from "./isStillBelieved.js"
export function beliefMergeManyStillBelieved<A>(
beliefs: Array<Belief<A>>,
): Belief<A> | Nothing {
const stillBelievedBeliefs = beliefs.filter(isStillBelieved)
return stillBelievedBeliefs.reduce(
(result, belief) => merge(result, belief),
nothing,
)
return beliefMergeMany(beliefs.filter(isStillBelieved))
}
9 changes: 9 additions & 0 deletions src/belief/beliefMergeMany.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { merge } from "../merge/merge.js"
import { type Nothing, nothing } from "../nothing/Nothing.js"
import type { Belief } from "./Belief.js"

export function beliefMergeMany<A>(
beliefs: Array<Belief<A>>,
): Belief<A> | Nothing {
return beliefs.reduce((result, belief) => merge(result, belief), nothing)
}
1 change: 1 addition & 0 deletions src/belief/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from "./Belief.js"
export * from "./beliefEqual.js"
export * from "./beliefMerge.js"
export * from "./beliefMergeMany.js"

0 comments on commit 80f279f

Please sign in to comment.