【问题标题】:Flattened form in WAMWAM 中的扁平化形式
【发布时间】:2020-11-13 01:51:57
【问题描述】:

WAM:教程重构指出,查询 p(Z, h(Z,W), f(W)) 需要使用以下原则进行展平:

话虽如此,查询扁平化形式是:

X3=h(X2, X5), X4=f(X5), X1=p(X2, X3, X4);

我迷失了外部变量的定义,请考虑以下几点:

p(Z, h(Y, a(K, C), b(W)), f(W)).

Y 是外部变量吗?这个扁平化的形式应该如何?据我了解,这将是构造:

X1 = p(X2, X3, X4)
X2 = Z
X3 = h(X5, X6, X7)
X4 = f(X8)
X5 = Y
X6 = a(X7, X8)
X7 = K
X8 = C
X9 = b(X5)

但我不确定,从 X4 开始我很困惑,我应该先分配 h 内部值吗?

【问题讨论】:

    标签: prolog warren-abstract-machine


    【解决方案1】:

    你的顺序是错误的:你在构建它们的论点之前就在构建它们。文本说在构建外部术语之前先构建论点。例如,您必须先构建a(K, C),然后才能构建h(..., a(K, C), ...),并且您必须先构建它,然后才能构建p(..., h(..., a(K, C), ...), ...)。这是一项法律命令:

    X7 = K
    X8 = C
    X6 = a(X7, X8)
    X5 = Y
    X9 = b(X5)
    X2 = Z
    X3 = h(X5, X6, X7)
    X4 = f(X8)
    X1 = p(X2, X3, X4)
    

    【讨论】:

    • 感谢您的回答。你知道任何算法来实现这个吗?我正在考虑使用树和一些递归,但我不确定它是否会起作用。
    • 是的,术语就是一棵树,递归就是这样做的方式。对于任何函子,首先递归生成其参数项,然后生成函子本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2015-09-15
    相关资源
    最近更新 更多