【问题标题】:Prolog - like gensym, but for variablesProlog - 类似于 gensym,但用于变量
【发布时间】:2014-01-24 23:09:03
【问题描述】:

我正在尝试借助 dynamic/1assert/1 规则在运行时生成一些规则。

有没有办法生成要在该规则中使用的变量,就像 gensym 但用于生成变量?

【问题讨论】:

    标签: prolog


    【解决方案1】:

    我会使用 functor/3 或 length/2。两者都可以创建您可以通过索引访问的变量,分别使用 arg/3 或 nth1/3。

    例如

    ?- functor(T, $, 5), arg(3, T, some_value).
    T = $(_G1070, _G1071, some_value, _G1073, _G1074).
    

    ?- length(T, 5), nth1(3, T, other_value).
    T = [_G1070, _G1073, other_value, _G1079, _G1082].
    

    【讨论】:

    • copy_term/2 也合适吗?我相信它也会产生变量。
    猜你喜欢
    • 2012-10-11
    • 2013-05-12
    • 2016-07-13
    • 2013-11-26
    • 2015-04-11
    • 2012-10-15
    • 2015-08-06
    • 2020-05-10
    • 2014-08-20
    相关资源
    最近更新 更多