在prolog中为列表的每个元素添加一个no
我不熟悉Prolog。我想写一个三元谓词来添加 第一个参数是数字,第二个参数是列表。第三个参数将保存结果 e、 g 我编写了以下代码:在prolog中为列表的每个元素添加一个no,prolog,Prolog,我不熟悉Prolog。我想写一个三元谓词来添加 第一个参数是数字,第二个参数是列表。第三个参数将保存结果 e、 g 我编写了以下代码: test(X , [] ,[] ). test(X , [H|T] ,[A|B]) :- add(X,H,A),test(X,T,B). add(X,H,K):-K is H +X. 如果我只给出列表中的数字,而不给出字母表,那么效果很好。我尝试使用if语句 add(X,H,K):- atom(H)->K is H ; K is H +X. 但
test(X , [] ,[] ).
test(X , [H|T] ,[A|B]) :- add(X,H,A),test(X,T,B).
add(X,H,K):-K is H +X.
如果我只给出列表中的数字,而不给出字母表,那么效果很好。我尝试使用if语句
add(X,H,K):- atom(H)->K is H ; K is H +X.
但它仍然没有给出结果。你几乎是对的
是
是错误的运算符,您需要=
。此外,使用number/1
进行检查可能会更省钱。因为[a]
和a(b)
也不是原子,但也不是数字
这样它就变成:
add(X,H,K):-
number(H)->
K is H+X;
K = H.
格式化确实提高了获得响应的机会。
add(X,H,K):-
number(H)->
K is H+X;
K = H.