Combining predicates with AND

Thanks to this post CompoundPredicate: A small library to combine Predicates - #2 by jmschonfeld

My attempt

func f1() {
    let p1 = #Predicate<Car> { $0.name == "aaa" }
    let p2 = #Predicate<Car> { $0.doors == 4 }
    let predicates = [p1, p2] //could have more predicates
    
    let truePredicate = #Predicate<Car> { _ in true }
    
    let predicate = predicates.reduce(truePredicate) { result, current in
        #Predicate<Car> {
            result.evaluate($0) && current.evaluate($0)
        }
    }
}