【问题标题】:What are the conditions of the query in order to be True?查询的条件是什么才能为真?
【发布时间】:2017-09-09 09:22:00
【问题描述】:

我是 Prolog 的新手,并试图弄清楚它是如何工作的。那么任何人都可以帮助我使用以下代码:

whatisthis([]).
whatisthis([_, b| L]):- whatisthis(L).

如果查询具有以下格式,Prolog 什么时候会返回“True”:

?- whatisthis(X).

我尝试了一些不同的输入,唯一返回“真”的 X 是 X = []。

【问题讨论】:

  • 为什么不直接运行查询而不给它一个特定的输入,而是一个变量?它会告诉你 X 的所有值,这使它成为真的!

标签: prolog


【解决方案1】:

这个查询甚至是声明式的,您可以查询X 将是什么:

?- whatisthis(X).
X = [] ;
X = [_G1242, b] ;
X = [_G1242, b, _G1248, b] ;
X = [_G1242, b, _G1248, b, _G1254, b] ;
X = [_G1242, b, _G1248, b, _G1254, b, _G1260, b] ;
X = [_G1242, b, _G1248, b, _G1254, b, _G1260, b, _G1266|...]

如果你点击分号 ; 它将发出下一个结果。 _Gxxxx 部分是未绑定 变量。你可以在那里写任何东西。

因此,每个X 都是一个偶数长度列表,其中每个第二个元素都是一个b。所以下面的例子会成功:

[]
[a, b]
[2, b]
[1, b, 4, b]
[a, b, 1, b]
[f(a,b), b, b(f,a), b]
[1, b, 4, b, 2, b, 5, b]

【讨论】:

    猜你喜欢
    • 2015-08-19
    • 1970-01-01
    • 2023-01-18
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2021-04-11
    • 2016-04-22
    相关资源
    最近更新 更多