Исправить ошибку The predicate 'main::posled/2 (i,o)', which is declared as 'procedure', is actually 'determ' - Prolog

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста исправить ошибку Задание такое : Реализовать набор предикатов для обработки списков: · Добавление элемента X к списку List. Выдать новый список. · Удаление элемента X из списка List. Выдать список без элемента Х. · Конкатенация списков. · Определение длины списка. · Определение принадлежности элемента Х списку List. Выбрать последний элемент списка L (posled) Определить, что список М является началом списка L.(isBeginning ) Ошибка The predicate 'main:: posled/2 (i,o)', which is declared as 'procedure', is actually 'determ' Заранее большое спасибо Текст программы
Листинг программы
  1. implement main
  2. open core
  3. constants
  4. className = "main".
  5. classVersion = "".
  6. domains
  7. list = integer*.
  8. class predicates
  9. add : (list, integer, list) procedure(i,i,o).
  10. remove : (list, integer, list) procedure(i,i,o).
  11. concat : (list,list,list ) procedure(i,i,o ).
  12. length :(list,integer) procedure(i,o).
  13. posled:(list,integer) procedure(i,o) .
  14. contains :(list, integer) determ.
  15. isBeginning :(list,list ) determ.
  16. clauses
  17. classInfo(className, classVersion).
  18. add(L1, X, R):- R = [X|L1].
  19. remove([],_,[]):-!.
  20. remove([Head|Tail],X,R):-not(Head=X),remove(Tail,X,R1),R=[Head|R1],!.
  21. remove([_|Tail],_,R):-R=Tail.
  22. concat([H1|[]],L2,R):- R = [H1|L2],!.
  23. concat([H1|T1],L2,R):- concat(T1,L2,R1), R=[H1|R1],!.
  24. concat(_,_,[]):-! .
  25. length([],0):-!.
  26. length([Head|Tail],R):- length(Tail,R1),R=R1+1,!.
  27. posled([Head],Head):- !.
  28. posled([_|Tail], Head):- posled(Tail, Head),!.
  29. contains([],_):-fail().
  30. contains([Head|_],X):- Head=X, succeed(),!.
  31. contains([_|Tail],X):- contains(Tail,X).
  32. isBeginning([H1|T1],[H2|T2]):- H1=H2,isBeginning(T1,T2);fail(). % второй является началом первого списка
  33. isBeginning([H1|_],[]):- succeed().
  34. clauses
  35. run():-console::init(),
  36. stdio::write("%Добавление элемента в список\n Введите элемент, который нужно добавить в список [5,6,10,3,2,7]\n"),
  37. add([5,6,10,3,2,7],stdio::read(),R),stdio::write(R), stdio::nl(),
  38. stdio::write("% Удаление элемента из списка\n Введите элемент, который нужно удалить из списка [5,6,10,3,2,7]\n"),
  39. remove([5,6,10,3,2,7],stdio::read(),A),stdio::write(A), stdio::nl(),
  40. stdio::write("% Конкатенация списков [1,4] и [12,15,11]\n"),
  41. concat([1,4],[12,15,11],E),stdio::write(E), stdio::nl(),
  42. concat([1,4],[],F),stdio::write("Конкатенация списков [1,4] и [ ]\n",F), stdio::nl(),
  43. stdio::write("% Длина списка\n"),
  44. length([1,0,2,3,4,5,6],L),stdio::write("Длина списка [1,0,2,3,4,5,6] = ",L), stdio::nl(),
  45. length([],L2),stdio::write("Длина списка [ ] = ",L2), stdio::nl (),
  46. length([3,4,5,6],L1),stdio::write("длина списка [3,4,5,6] = ",L1), stdio::nl(),
  47.  
  48. stdio::write("% Определение последнего элемента списка [5,6,10,3,2,7]\n "),
  49. posled([5,6,10,3,2,7], X),stdio::write("Последний элемент списка [5,6,10,3,2,7] = ",X), stdio::nl(),
  50. stdio::write("% Определение принадлежности элемента списку [5,6,10,3,2,7]\n Введите элемент для проверки \n"),
  51. (contains([5,6,10,3,2,7],stdio::read()),stdio::write("элемент содержится в списке\n"),!;stdio::write("элемент не содержится в списке\n"),
  52. succeed()),(
  53. stdio::write("% Определение является ли началом список [5,6] списка [5,6,10,3,2,7]\n"),
  54. isBeginning([5,6,10,3,2,7],[5,6]),stdio::write("является\n"),!;stdio::write("не является\n") , succeed()), succeed().
  55.  
  56. end implement main
  57. goal
  58. mainExe::run(main::run).

Решение задачи: «Исправить ошибку The predicate 'main::posled/2 (i,o)', which is declared as 'procedure', is actually 'determ'»

textual
Листинг программы
  1. class predicates
  2.   test: (...) determ
  3. clauses
  4.   run() :-
  5.     test(), !, console::write("Normal"); % - точка с запятой начинает новую ветку
  6.     console::write("Fail").

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы