Functional programming languages include various features in pattern matching, such as guarded patterns, matching by custom predicate, active patterns, synonymous patterns, etc. Besides, several languages include mechanisms for binding names as part of a boolean expression that appears in either an if-statement, a while-loop condition, or a pattern guard. This name may be bound either through a simple let-binding or via a test performed using pattern-matching. All these features are useful in practice, yet it appears that no language supports them all at once. In this work, we present a core language that consists of a small number of constructs that suffice to encode and combine all the desired features of pattern matching and binding boolean expressions.