static Conveyor<From<I>, I> takeWhile<I>(bool f(I i)) => consume((i) => f(i) ? produce(i, takeWhile(f)) : halt());