OxL Справочник OxL
РусскийEnglish

fn scan

Running fold: emits the accumulator after every element.

Example:

oxl✓ проверяется в CI
use std.stream { scan }

fn nums() -> stream<i32> {
  for i in 1..=4 { yield i }
}

fn main() io {
  var out: List<i32> = []
  for await x in nums() |> scan(0, (acc, x) => acc + x) { out.push(x) }
  print("{out}")
}
Вывод
[1, 3, 6, 10]
pub(api) fn scan<T, A, E, effect F>(s: stream<T, E>, init: A, f: fn(A, T) -> A F escaping) -> stream<A, E>  F

С версии. 1.0.0-beta

Параметры

ИмяТип
sstream<T, E>
initA
ffn(A, T) -> A F escaping

Возвращает

stream<A, E> F

Эффекты

не объявлены (чистая, пока тело не говорит иное)

Определено в: std/stream/stream.oxl:165

См. также