Bir aritmetik ikili ağacı değerlendirmeye çalışıyorum.Hata: `hesaplama/4 'bir işlev değil
tree_calc(tree(L, Root, R), Eval) :- compute(Root, L, R, Eval).
compute(Root, 'empty', 'empty', Root).
compute(Root, L, R, Eval):- number(L), number(R), E =..[Root,L,R], Eval is E.
compute(Root, L, R, Eval):-
L = tree(LL, LRoot, LR), R = tree(RL, RRoot, RR),
E =..[Root, compute(LRoot, LL, LR, LEval), compute(RRoot, RL, RR, REval)],
Eval is E.
ben girişi ile programı çalıştırdığınızda:
tree_calc(tree(tree(empty,2,empty),
'+',tree(tree(empty,1,empty),
'/',tree(empty,2,empty))), Eval).
ben hata alıyorum:
ERROR: is/2: Arithmetic: `compute/4' is not a function
bu hata olarak atılıyor neden çalışmak için görünmüyor olabilir
Bir fonksiyon tanımlanmamışsa, bunun sadece gösterildiğini düşündüm.
Yardımlarınız için teşekkürler. Birleştirme için değil, aritmetik ataması için
OP, "ağaç/3" tanımını değiştirmediği sürece, ilk çözümünüz doğru olmalıdır. Bu onların [ilk yazı] bir devamıdır (http://stackoverflow.com/questions/36197849/returning-results-in-recursion). Şimdi OP, biraz kafa karıştırıcı olan 'Kök' orta argümanını çağırıyor. – lurker