无法在 Prolog 中使用用户定义的运算符
Unable to use user-defined operator in Prolog
我在这个问题上被困了很长一段时间,我的 Prolog 程序在其运算符定义中有以下行:
:- op(100, xfx, [has,gives,'does not',eats,lays,isa]).
然后这个事实:
fact :: X isa animal :-
member(X, [cheetah,tiger,giraffe,zebra,ostrich,penguin, albatross]).
当我尝试使用运算符时,它说它是未定义的,我只是不明白为什么。
?- peter isa tiger.
ERROR: [Thread pdt_console_client_0_Default Process] toplevel: Undefined
procedure: (isa)/2 (DWIM could not correct goal)
抱歉,如果它有些愚蠢(可能是这样),但我是 Prolog 的新手。非常感谢任何帮助。
它正在工作。自己看看:
stefan@stefan-Lenovo-G510 ~ $ swipl
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.3.12)
% ...
?- op(100, xfx, [has,gives,'does not',eats,lays,isa]).
true.
?- Term = (peter isa tiger).
Term = peter isa tiger.
您收到的错误消息...
procedure: (isa)/2 (DWIM could not correct goal)
...也这么说!
现在清楚了吗?
我在这个问题上被困了很长一段时间,我的 Prolog 程序在其运算符定义中有以下行:
:- op(100, xfx, [has,gives,'does not',eats,lays,isa]).
然后这个事实:
fact :: X isa animal :-
member(X, [cheetah,tiger,giraffe,zebra,ostrich,penguin, albatross]).
当我尝试使用运算符时,它说它是未定义的,我只是不明白为什么。
?- peter isa tiger.
ERROR: [Thread pdt_console_client_0_Default Process] toplevel: Undefined
procedure: (isa)/2 (DWIM could not correct goal)
抱歉,如果它有些愚蠢(可能是这样),但我是 Prolog 的新手。非常感谢任何帮助。
它正在工作。自己看看:
stefan@stefan-Lenovo-G510 ~ $ swipl Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.3.12) % ... ?- op(100, xfx, [has,gives,'does not',eats,lays,isa]). true. ?- Term = (peter isa tiger). Term = peter isa tiger.
您收到的错误消息...
procedure: (isa)/2 (DWIM could not correct goal)
...也这么说!
现在清楚了吗?