Truncate a MLList when running out of available heartbeats. #

def MLList.whileAtLeastHeartbeatsPercent {m : TypeType} {α : Type} [Monad m] [MonadLiftT Lean.CoreM m] (L : MLList m α) (percent : optParam Nat 10) :
MLList m α

Take an initial segment of a monadic lazy list, stopping when there is less than percent of the remaining allowed heartbeats.

If getMaxHeartbeats returns 0, then this passes through the original list unmodified.

The initial heartbeat counter is recorded when the first element of the list is requested. Then each time an element is requested from the wrapped list the heartbeat counter is checked, and if current * 100 / initial < percent then that element is returned, but no further elements.

  • One or more equations did not get rendered due to their size.
Instances For