Pyke 逻辑编程入门(8):模式匹配之“病理学问题的答案”


病理学问题的答案

这是下面问题的答案:

一个病理学的问题

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

  • 元组模式 A:
    • ((ho, $_, ($a, $a)), ($a, $a, $b), ($a, *$b))
  • 元组模式 B:
    • ($x, $x, $y)
问题答案

让我们一步一步地对两个元组模式的成员进行匹配合一。

  • (ho, $_, ($a, $a)) 与 $x 匹配。

    匹配成功:

    $x 约束成 (ho, $_, ($a, $a))

  • ($a, $a, $b) 与 $x 匹配。

    由于 $x 已经如上约束了值,这一匹配实际成为:

    ($a, $a, $b) 与 (ho, $_, ($a, $a)) 的匹配

    由此完成以下约束:

    $a 变成 ho

    $b 变成($a, $a)

    $_ 是匿名变量,没有值,不能约束其他变量,也不接受其他变量的约束。

  • ($a, *$b) 与 $y 匹配。

    由于 $a 和 $b 已有约束值,这一匹配实际成为:

    (ho, ho, ho) 与 $y 匹配

    由此完成以下约束:

    $y 变成 (ho, ho, ho)

总之,匹配的过程完成了以下值的约束:

$x 变成 (ho, $_, ($a, $a))

$a 变成 ho

$b 变成 ($a, $a)

$y 变成 (ho, ho, ho)

结论是:$y 等于 (ho, ho, ho)。

注 意
你若解题回答正确,你真应该使用 Pyke 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值