我正在尝试定义一个序言谓词数字(X,Y),如果X是十进制数字Y的罗马数字,则为真。
numerals(X,Y) :- X is ('M'), Y>=1000.
numerals(X,Y) :- X is ('CM'), Y>=900.
numerals(X,Y) :- X is ('D'), Y>=500.
numerals(X,Y) :- X is ('CD'), Y>=400.
numerals(X,Y) :- X is ('C'), Y>=100.
.
.
.
.
当我运行我的代码时,出现错误:
?-numerals(M,1001).
ERROR: toplevel: Undefined procedure: numerals/2 (DWIM could not correct goal)
答案 0 :(得分:2)
Prolog基于生成然后测试。两部分之间的顺序很重要。你想测试什么以及你想要生成什么?
此外,你确定要使用“是”。这是用于算术运算。
最后,你真的打算在没有依赖关系的情况下编写规则吗?使用递归算法可能是个好主意......或者您必须为任何可能的数字编写规则。
答案 1 :(得分:1)
您尚未加载该程序。请尝试listing
查看此内容 - 否则请参阅my first reply。