“…We define a pattern calculus with explicit pattern-matching called Λ p -calculus. The use of explicit pattern-matching becomes very appropriate to implement different evaluation strategies, thus giving rise to different languages with pattern-matching [11,12,1]. In all of them, an application (λp.t)u reduces to t[p/u], where the constructor [p/u] is an explicit matching, defined by means of suitable reduction rules, which are used to decide if the argument u matches the pattern p. If the matching is possible, the evaluation proceeds by computing a substitution which is applied to the body t. Otherwise, two cases may arise: either a successful matching is not possible at all, and then the term t[p/u] reduces to a failure, denoted by the constant fail, or pattern matching could potentially become possible after the application of some pertinent substitution to the argument u, in which case the reduction is simply blocked.…”