我解決問題(未定期總和!!內部限制)兩個列表的求和元件: 清單表示整數說用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,它們實際上是不同的謂詞。 –