【问题标题】:PROLOG - Syntax error: Operator expected when using not (..)PROLOG - 语法错误:使用 not (..) 时应使用运算符
【发布时间】:2014-01-23 21:20:55
【问题描述】:

我想编写序言代码给我 L3 包含 L1 没有 L2 的参数 (L3 = L1\L2)。

在这段代码中我遇到了这个问题:

语法错误:需要运算符

对于最后一行

contains(_,[]) .
contains(L1,[X|TL]) :- member( X, L1) , contains(L1,TL).
minus(L1,L2,L3) :- contains(L3,L1) , not ( contains(L3,L2) ).

谢谢。

【问题讨论】:

  • 你应该改用\+,因为它更便携。您正在使用哪种 Prolog 实现?

标签: prolog


【解决方案1】:

not(通常)未定义为运算符。你应该改写not( contains(L3,L2) ),或者更好的是,使用ISO Prolog标准(\+)/1否定控制结构并写\+ ( contains(L3,L2) )。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多