如何修复tolowercase实现prolog的错误?

时间:2017-11-22 22:31:17

标签: prolog syntax-error

我正在尝试在prolog中创建一个tolower实现,但我一直收到错误,我不确定它的含义。

?- tolower("HE",L).    
ERROR: tolower/2: Undefined procedure: (+)/2

这是我到目前为止的实施。

tolower([], _).
tolower([H|T], L):-
    H + 32, tolower(T, L).

1 个答案:

答案 0 :(得分:3)

让我们看看H + 32的含义:

?- write_canonical(H+32).
+(_,32)

所以你要调用一个名为+的谓词,带有两个参数。

您尚未定义此类谓词,因此会出现错误。

要评估算术表达式,请使用例如(#=)/2之类的约束作为整数:

R #= H + 32

这是一种关系,称R 等于 H + 32,计算为整数表达式。

根据您的Prolog系统,您可能必须导入库才能使用(#=)/2