您的位置:首页 > 编程语言

Pyke 逻辑编程入门(7):模式匹配之“两个模式的匹配”

2010-03-10 05:45 323 查看
两个模式的匹配

你已经见过不同类型的模式,及其如何与数据匹配合一。

模式用于产生事实(陈述)。一种方式是通过询问得到事实,即模式与数据匹配。

生成事实的另外一种方式,是使用规则。以后再解释它。

应用规则,即需要模式与数据的匹配,也需要模式之间的匹配。

在讨论规则问题之前,需要弄清两个模式是如何匹配的。

简单地说,全靠模式变量。模式变量不仅可以约束成数据,也会约束成别的模式。

约束成文字模式

把模式变量约束成文字模式,就像把它约束成文字模式中的数据。仅此而已。

约束成别的模式变量

若模式变量A约束成B,即A变成了B,则它们实际上成为相同的模式变量。

模式变量A约束成B之后,B依旧是自由的、未受约束的。

在把模式变量B约束成某个值之前,说A或B已受约束,都是错误的。

无论把模式变量A或B的哪一个约束成某个值,可以肯定,B已经约束成那个值。

若B约束成了某个值,通过与模式变量A或B的匹配合一,都可得到相同的这个值。

不管目的和意图如何,模式变量A和B成了相同变量。

一个病理学的问题

下列两个元组模式匹配合一之后,其中模式变量 $y 约束的值是什么:

元组模式 A:

((ho, $_, ($a, $a)), ($a, $a, $b), ($a, *$b))

元组模式 B:

($x, $x, $y)

问题答案在此,先别偷看哟……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: