necoherence/transition
Types
Capacity
opaqueA bound on how many outputs one transition may accumulate.
pub opaque type Capacity
pub type CapacityError {
CapacityNegative(value: Int)
}
Constructors
-
CapacityNegative(value: Int)
What one application of the caller’s advance function decided about the input it was given.
pub type Consumption(state, output) {
Consumed(state: state, outputs: List(output))
Reprocess(state: state, outputs: List(output))
}
Constructors
-
Consumed(state: state, outputs: List(output)) -
Reprocess(state: state, outputs: List(output))
pub type LimitError {
LimitNotPositive(value: Int)
}
Constructors
-
LimitNotPositive(value: Int)
PositiveLimit
opaqueA positive bound on how many times one input may be reprocessed.
pub opaque type PositiveLimit
Why a transition stopped without consuming its input.
pub type StepFailure {
ReprocessLimitExhausted(limit: Int)
CapacityExceeded(capacity: Int, attempted: Int)
}
Constructors
-
ReprocessLimitExhausted(limit: Int) -
CapacityExceeded(capacity: Int, attempted: Int)
The closed result of one transition.
pub type StepTransition(state, output) {
Settled(state: state, outputs: List(output), applications: Int)
Failed(
state: state,
outputs: List(output),
failure: StepFailure,
)
}
Constructors
-
Settled(state: state, outputs: List(output), applications: Int) -
Failed(state: state, outputs: List(output), failure: StepFailure)
Values
pub fn capacity_new(
value: Int,
) -> Result(Capacity, CapacityError)
pub fn capacity_value(capacity: Capacity) -> Int
pub fn positive_limit_new(
value: Int,
) -> Result(PositiveLimit, LimitError)
pub fn positive_limit_value(limit: PositiveLimit) -> Int
pub fn step(
state: state,
input: input,
advance: fn(state, input) -> Consumption(state, output),
limit: PositiveLimit,
capacity: Capacity,
) -> StepTransition(state, output)
Evaluate one input to a closed result in a single call.
advance is applied to the same input until it reports Consumed, at most
limit times. Outputs keep the order in which advance produced them and
never exceed capacity.