模式识别用于将模式与项式进行匹配。如果一个模式与项式具备相同的结构则匹配成功,并且模式中的所有变量将被绑定到项式中相应位置上出现的数据结构。
程序1.4定义了在摄氏、华氏和列式温标间进行温度转换的函数convert。convert的第一个参数是一个包含了温标和要被转换的温度值,第二个参数是目标温标。
对convert进行求值时,函数调用中出现的参数(项式)与函数定义中的模式进行匹配。当找到一个匹配时,“->”右侧的代码便被求值,如:
匹配原语“=”
表达式Pattern=Expression致使Expression被求值并尝试与\ Pattern 进行匹配。匹配过程要么成功要么失败。一旦匹配成功,则Pattern中所有的变量都被绑定,例如:
下划线(写作“_”)代表特殊的匿名变量或无所谓变量。在语法要求需要一个变量但又不关心变量的取值时,它可用作占位符。
如果匹配成功,定义表达式Lhs=Rhs的取值为Rhs。这使得在单一表达式中使用多重匹配成为可能,例如: