Decoder<A> ensure(bool Function(A) predicate, String message) => flatMap((a) => predicate(a) ? pure(a) : Decoder.fail(message));