4.4.3.1 Function bindings A function binding binds a variable to a function value. The general form of a function binding for variable x is: x p11 ... p1k match1 ... x pn1 ... pnk matchn where each pij is a pattern, and where each matchi is of the general form: = ei where { declsi } or | gi1 = ei1 ... | gimi = eimi where { declsi } and where n>=1, 1<=i<=n, mi>=1. The former is treated as shorthand for a particular case of the latter, namely: | True = ei where { declsi } Note that all clauses defining a function must be contiguous, and the number of patterns in each clause must be the same. The set of patterns corresponding to each match must be linear---no variable is allowed to appear more than once in the entire set. Alternative syntax is provided for binding functional values to infix operators. For example, these three function definitions are all equivalent: plus x y z = x+y+z x `plus` y = \ z -> x+y+z (x `plus` y) z = x+y+z Translation: The general binding form for functions is semantically equivalent to the equation (i.e. simple pattern binding): x = \ x1 ... xk -> case (x1, ..., xk) of (p11, ..., p1k) match1 ... (pn1, ..., pnk) matchn where the xi are new identifiers.