-module(testament@internal@stream). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/testament/internal/stream.gleam"). -export([new/1, map/2, filter/2, to_list/1]). -export_type([stream/2]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(false). -opaque stream(SRV, SRW) :: {step, list(SRV), fun((list(SRV)) -> list(SRW))}. -file("src/testament/internal/stream.gleam", 8). ?DOC(false). -spec new(list(SRX)) -> stream(SRX, SRX). new(Vals) -> {step, Vals, fun gleam@function:identity/1}. -file("src/testament/internal/stream.gleam", 12). ?DOC(false). -spec map(stream(SSB, SSC), fun((SSC) -> SSF)) -> stream(SSB, SSF). map(S, F) -> {step, Values, Curr} = S, {step, Values, fun(Vals) -> _pipe = Curr(Vals), gleam@list:map(_pipe, F) end}. -file("src/testament/internal/stream.gleam", 18). ?DOC(false). -spec filter(stream(SSI, SSJ), fun((SSJ) -> boolean())) -> stream(SSI, SSJ). filter(S, F) -> {step, Values, Curr} = S, {step, Values, fun(Vals) -> _pipe = Curr(Vals), gleam@list:filter(_pipe, F) end}. -file("src/testament/internal/stream.gleam", 24). ?DOC(false). -spec to_list(stream(any(), SSP)) -> list(SSP). to_list(S) -> {step, Values, Curr} = S, Curr(Values).