Throughout the library we usually write this `predicate(value, index, list)`