def inf.go
import bend-kit-zlib@0.5.1.0/zlib.bend as Zlibimport Base
467# Every step reads at least one bit or fails, so 8 steps per input byte always finish a valid stream.
468def inf.go(k: Nat, st: Is) -> Is:
469 match k:
470 case 0n:
471 st
472 case 1n+f:
473 Is{b, o, mode, +last} = st
474 match mode:
475 case MoHead{}:
476 inf.go(f, inf.head(br.take(b, 3), o))
477 case MoCodes{lit, dist}:
478 inf.go(f, inf.sym(br.sym(lit, b), dist, o, last))
479 case MoDone{}:
480 Is{b, o, MoDone{}, last}
481 case MoBad{}:
482 Is{b, o, MoBad{}, last}