def Drive.read
bend-trace-context@0.2.0.0 · trace_context.bend:982
import bend-trace-context@0.2.0.0/trace_context.bend as TraceContext
import Base
982
983
984
985
986
987
988def Drive.read(~T: Data, ~D: Data, ~waiting: T -> Maybe<&2, D>, ~feed: Result<&1, &1, U32 & String, U32> -> D -> T,
989 ~S: Type, ~read: S -> IO(S & Result<&1, &1, U32 & String, U32>), fuel: Nat, current: S & (T & Maybe<&2, D>)) ->
990 IO(S & T):
991 match fuel current:
992 case _ Tuple{state, Tuple{step, None{}}}:
993 IO.pure(S & T, (state, step))
994 case 0n Tuple{state, Tuple{step, Some{draw}}}:
995 IO.pure(S & T, (state, step))
996 case 1n+p Tuple{state, Tuple{step, Some{draw}}}:
997 IO.bind(S & Result<&1, &1, U32 & String, U32>, S & T, read(state),
998 got => Drive.read(~T, ~D, ~waiting, ~feed, ~S, ~read, p, Drive.fed(~T, ~D, ~waiting, ~feed, S, got, draw)))