我解决问题(未定期总和!!内部限制)两个列表的求和元件: 清单表示整数说用L 12345 = [12,34,5]的每个元素应当练习是编写一个函数(和),它将两个列表相加并给出它们的和的等价列表,它们表示两个整数的和。的Prolog:表示整数
?-sum([11,11],[11,11],L,0).
L=[22,22].
?-sum([12,81],[11,44],L,0).
L=[24,25].
//digit fxn for making sure that we insert an elemnt of two or single integer
//and saving the overflow digit in S1.
我的代码,让我错误:
digit(X,D,S1):- S is X/100,S1 is integer(S),0 is S1,D is X.
digit(X,D,S1):-D is mod(X/100).
sum([],[],[],0).
sum(H1|T1,H|T,H3|T3,S):-Z is H1+H+S ,digit(Z,H3,S1),sum(T1,T,T3,S1).
sum_list_mod_100是arity/3,但尾部是arity/4怎么可能? –
一个普通的序言习语是有一个“public”谓词(在本例中为'sum_list_mod_100/3',它调用一个“私人”工作者谓词,它有一个或两个额外的参数来承载状态。 * functor *(name)作为公共谓词,但具有不同的* arity *(参数数量)。Prolog谓词由functor *和arity独一无二。两个谓词共享一个共同的函子,但由于它们有不同的arities,它们实际上是不同的谓词。 –