---
title: PredicateExpression
framework: foundation
role: symbol
role_heading: Protocol
path: foundation/predicateexpression
---

# PredicateExpression

A component expression that makes up part of a predicate.

## Declaration

```swift
protocol PredicateExpression<Output>
```

## Overview

Overview To transform a predicate, define a protocol for the result and add conformance on each predicate expression type that you support. For example: protocol ProsePredicateExpression {     func proseQuery() -> String }

// Repeated for each supported operator. extension PredicateExpressions.Equal: ProsePredicateExpression          where LHS: ProsePredicateExpression,         RHS: ProsePredicateExpression {     func proseQuery() -> String {         return lhs.proseQuery() + " is equal to " + rhs.proseQuery()     } }

extension Predicate  {     func proseQuery() -> String? {         guard let expression = expression as? ProsePredicateExpression else { return nil }         return expression.proseQuery()     } }

## Topics

### Evaluating a predicate expression

- [Output](foundation/predicateexpression/output.md)
- [evaluate(_:)](foundation/predicateexpression/evaluate(_:).md)

## Relationships

### Inherited By

- [StandardPredicateExpression](foundation/standardpredicateexpression.md)

### Conforming Types

- [PredicateExpressions.Arithmetic](foundation/predicateexpressions/arithmetic.md)
- [PredicateExpressions.ClosedRange](foundation/predicateexpressions/closedrange.md)
- [PredicateExpressions.CollectionContainsCollection](foundation/predicateexpressions/collectioncontainscollection.md)
- [PredicateExpressions.CollectionIndexSubscript](foundation/predicateexpressions/collectionindexsubscript.md)
- [PredicateExpressions.CollectionRangeSubscript](foundation/predicateexpressions/collectionrangesubscript.md)
- [PredicateExpressions.Comparison](foundation/predicateexpressions/comparison.md)
- [PredicateExpressions.Conditional](foundation/predicateexpressions/conditional.md)
- [PredicateExpressions.ConditionalCast](foundation/predicateexpressions/conditionalcast.md)
- [PredicateExpressions.Conjunction](foundation/predicateexpressions/conjunction.md)
- [PredicateExpressions.DictionaryKeyDefaultValueSubscript](foundation/predicateexpressions/dictionarykeydefaultvaluesubscript.md)
- [PredicateExpressions.DictionaryKeySubscript](foundation/predicateexpressions/dictionarykeysubscript.md)
- [PredicateExpressions.Disjunction](foundation/predicateexpressions/disjunction.md)
- [PredicateExpressions.Equal](foundation/predicateexpressions/equal.md)
- [PredicateExpressions.ExpressionEvaluate](foundation/predicateexpressions/expressionevaluate.md)
- [PredicateExpressions.Filter](foundation/predicateexpressions/filter.md)
- [PredicateExpressions.FloatDivision](foundation/predicateexpressions/floatdivision.md)
- [PredicateExpressions.ForceCast](foundation/predicateexpressions/forcecast.md)
- [PredicateExpressions.ForcedUnwrap](foundation/predicateexpressions/forcedunwrap.md)
- [PredicateExpressions.IntDivision](foundation/predicateexpressions/intdivision.md)
- [PredicateExpressions.IntRemainder](foundation/predicateexpressions/intremainder.md)
- [PredicateExpressions.KeyPath](foundation/predicateexpressions/keypath.md)
- [PredicateExpressions.Negation](foundation/predicateexpressions/negation.md)
- [PredicateExpressions.NilCoalesce](foundation/predicateexpressions/nilcoalesce.md)
- [PredicateExpressions.NilLiteral](foundation/predicateexpressions/nilliteral.md)
- [PredicateExpressions.NotEqual](foundation/predicateexpressions/notequal.md)
- [PredicateExpressions.OptionalFlatMap](foundation/predicateexpressions/optionalflatmap.md)
- [PredicateExpressions.PredicateEvaluate](foundation/predicateexpressions/predicateevaluate.md)
- [PredicateExpressions.Range](foundation/predicateexpressions/range.md)
- [PredicateExpressions.RangeExpressionContains](foundation/predicateexpressions/rangeexpressioncontains.md)
- [PredicateExpressions.SequenceAllSatisfy](foundation/predicateexpressions/sequenceallsatisfy.md)
- [PredicateExpressions.SequenceContains](foundation/predicateexpressions/sequencecontains.md)
- [PredicateExpressions.SequenceContainsWhere](foundation/predicateexpressions/sequencecontainswhere.md)
- [PredicateExpressions.SequenceMaximum](foundation/predicateexpressions/sequencemaximum.md)
- [PredicateExpressions.SequenceMinimum](foundation/predicateexpressions/sequenceminimum.md)
- [PredicateExpressions.SequenceStartsWith](foundation/predicateexpressions/sequencestartswith.md)
- [PredicateExpressions.StringCaseInsensitiveCompare](foundation/predicateexpressions/stringcaseinsensitivecompare.md)
- [PredicateExpressions.StringContainsRegex](foundation/predicateexpressions/stringcontainsregex.md)
- [PredicateExpressions.StringLocalizedCompare](foundation/predicateexpressions/stringlocalizedcompare.md)
- [PredicateExpressions.StringLocalizedStandardContains](foundation/predicateexpressions/stringlocalizedstandardcontains.md)
- [PredicateExpressions.TypeCheck](foundation/predicateexpressions/typecheck.md)
- [PredicateExpressions.UnaryMinus](foundation/predicateexpressions/unaryminus.md)
- [PredicateExpressions.Value](foundation/predicateexpressions/value.md)
- [PredicateExpressions.Variable](foundation/predicateexpressions/variable.md)

## See Also

### Filltering

- [Predicate](foundation/predicate.md)
- [PredicateError](foundation/predicateerror.md)
- [PredicateCodableConfiguration](foundation/predicatecodableconfiguration.md)
- [PredicateCodableKeyPathProviding](foundation/predicatecodablekeypathproviding.md)
- [StandardPredicateExpression](foundation/standardpredicateexpression.md)
- [PredicateExpressions](foundation/predicateexpressions.md)
- [PredicateBindings](foundation/predicatebindings.md)
- [NSPredicate](foundation/nspredicate.md)
- [NSExpression](foundation/nsexpression.md)
- [NSComparisonPredicate](foundation/nscomparisonpredicate.md)
- [NSCompoundPredicate](foundation/nscompoundpredicate.md)
