probly

Types

pub type Dist(a) =
  List(#(a, Prob))
pub type Event(a) =
  fn(a) -> Bool
pub type Prob =
  Float
pub type Spread(a) =
  fn(List(a)) -> Dist(a)

Functions

pub fn combine_dist(
  dist1: List(#(a, Float)),
  dist2: List(#(b, Float)),
) -> List(#(#(a, b), Float))

Combine distributions assuming independence. For every (value1, prob1) in dist1 and (value2, prob2) in dist2, produce ((value1, value2), prob1 * prob2).

pub fn combine_dist_normalized(
  dist1: List(#(a, Float)),
  dist2: List(#(b, Float)),
) -> List(#(#(a, b), Float))
pub fn normalize(dist: List(#(a, Float))) -> List(#(a, Float))

Merge duplicates in a distribution by summing probabilities.

pub fn probability_of_event(
  event: fn(a) -> Bool,
  dist: List(#(a, Float)),
) -> Float
Search Document