def minimize

bend-kit-property@0.4.0.0 · property.bend:42

import bend-kit-property@0.4.0.0/property.bend as Property
import Base

42# Each accepted failure restarts shrinking; fuel bounds user-supplied shrinkers.
43def minimize(~T: Type, ~copy: T -> T & T, ~shrink: T -> List<&1, T>, ~test: T -> T & Bool,
44  fuel: Nat, state: T & Maybe<&1, T>) -> T:
45  match fuel:
46    case 0n:
47      (original, choice) = state
48      Maybe.default(&1, T, choice, original)
49    case 1n+p:
50      (original, choice) = state
51      match choice:
52        case None{}:
53          original
54        case Some{candidate}:
55          minimize(~T, ~copy, ~shrink, ~test, p, attempt(~T, ~copy, ~shrink, ~test, candidate))

Uses (8)

Used by (1)