Не запускается пример программы с интуита на visual prologe 7.4

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

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

Листинг программы
  1. open core, console, string, list
  2. class facts - db
  3. rule: (positive, string, string, positive*).
  4. cond: (positive, string, string).
  5. topic: (string).
  6. class facts
  7. answer: (positive, integer).
  8. class predicates
  9. expert: (string).
  10. ask: (positive, positive*) determ.
  11. ask: (integer, positive, positive*) determ.
  12. explanation: (positive).
  13. getAnswer: () -> integer.
  14. getAnswer: (char) -> integer determ.
  15. correct: (positive*) determ.
  16. clauses
  17. expert(Topic):-
  18. rule(K, Topic, Goal, QList),
  19. ask(K, QList),
  20. correct(QList),
  21. !,
  22. writef("Заключение: % - %.", Topic, Goal).
  23. expert(Topic):-
  24. writef("Не хватает сведений, чтобы определить %.", Topic).
  25. ask(_, [N | _]):-
  26. answer(N, 0), % если признак отсутствует,
  27. !, % то это животное не подходит
  28. fail.
  29. ask(K, [N | QList]):-
  30. answer(N, 1), % если признак присутствует,
  31. !, % то следующий вопрос
  32. ask(K, QList).
  33. ask(K, [N | QList]):-
  34. cond(N, X, Y), % задается вопрос о признаке
  35. writef("Верно ли, что % - %? (да/нет/?): > ", X, Y),
  36. A = getAnswer(), % ответ от пользователя
  37. !,
  38. ask(A, K, [N | QList]). % реакция на ответ
  39. ask(_, []).
  40. ask(2, K, QList):- !, % если введен знак ?, то
  41. explanation(K), % выдается объяснение,
  42. ask(K, QList). % опрос продолжается
  43. ask(A, _, [N | _]):-
  44. assert(answer(N, A)), % ответ запоминается в БД
  45. fail.
  46. ask(1, K, [_ | QList]):- % если ответ положительный,
  47. ask(K, QList). % то опрос продолжается
  48. explanation(K):-
  49. rule(K, Topic, Goal, QList),
  50. writef("Проверяется гипотеза, что % - %. Это так, если\n",
  51. Topic, Goal),
  52. F = {(I):- cond(I, X, Y), !, writef("\t% - %\n", X, Y); succeed},
  53. forAll(QList, F),
  54. L = [N || answer(N, 1), isMember(N, QList)],
  55. L <> [],
  56. !,
  57. write("Известно, что\n"),
  58. forAll(L, F).
  59. explanation(_).
  60. correct(QList):-
  61. answer(N, 1), % если есть признак,
  62. not(isMember(N, QList)), % которого не должно быть,
  63. !, % то животное не подходит
  64. fail;
  65. succeed().
  66. getAnswer() = R:-
  67. S = frontChar(toLowerCase(trim(readLine()))),
  68. R = getAnswer(S),
  69. !.
  70. getAnswer() = 0.
  71. getAnswer(S) = 1:- % положительный ответ
  72. (S = 'д'; S = 'y'; S = 'l'), % не зависит от раскладки
  73. !.
  74. getAnswer('?') = 2.
  75. run():-
  76. file::consult("base.txt", db),
  77. topic(Topic),
  78. expert(Topic),
  79. !,
  80. _ = readLine();
  81. succeed().
база вот
Листинг программы
  1. clauses
  2. rule(1, "чудовище", "грифон", [1, 6, 12, 18]).
  3. rule(2, "чудовище", "дракон", [1, 4, 15, 19]).
  4. rule(3, "чудовище", "единорог", [1, 5, 2, 7, 9, 11, 16]).
  5. rule(4, "чудовище", "сатир", [2, 8, 10, 14, 17]).
  6. rule(5, "чудовище", "сфинкс", [3, 13, 18]).
  7. cond(1, "чудовище", "крылатое").
  8. cond(2, "чудовище", "рогатое").
  9. cond(3, "чудовище", "без крыльев и рогов").
  10. cond(4, "форма крыльев", "летучей мыши").
  11. cond(5, "форма крыльев", "лебединые").
  12. cond(6, "форма крыльев", "орлиные").
  13. cond(7, "форма рогов", "прямые").
  14. cond(8, "форма рогов", "изогнутые").
  15. cond(9, "количество рогов", "1").
  16. cond(10, "количество рогов", "2").
  17. cond(11, "голова", "лошадиная").
  18. cond(12, "голова", "орлиная").
  19. cond(13, "голова", "человечья").
  20. cond(14, "голова", "обезьянья").
  21. cond(15, "голова", "крокодилья").
  22. cond(16, "туловище", "лошадиное").
  23. cond(17, "туловище", "козлиное").
  24. cond(18, "туловище", "львиное").
  25. cond(19, "туловище", "змеиное").
  26. topic("чудовище").
Вот ссылка на страницу откуда брал листинг программы -http://www.intuit.ru/studies/courses/12333/1180/lecture/19984?page=1 ,Компилятор ругается на самую первую строку open core, console, string, list конкретно на слово open ,можете помочь ,я только начал изучение этого языка,заранее благодарю!
так же не могу запустить и следующую программу с интуита про задачу энштейна ,ругается аналогично на open

Решение задачи: «Не запускается пример программы с интуита на visual prologe 7.4»

textual
Листинг программы
  1. /*****************************************************************************
  2.  
  3.                         Copyright (c) 2015 My Company
  4.  
  5. ******************************************************************************/
  6. implement main
  7.     open core
  8. class facts - relatives
  9.     parent: (string Родитель, string Ребенок).
  10.     spouse: (string Муж, string Жена).
  11.     male: (string).
  12.     female: (string).
  13. class predicates
  14.     father: (string Отец, string Ребенок) nondeterm anyflow.
  15.     mother: (string Мать, string Ребенок) nondeterm (o,o).
  16. clauses
  17. father(X, Y):-
  18.         parent(X, Y),
  19.         male(X).
  20.  
  21.     mother(X, Y):-
  22.         parent(X, Y),
  23.         female(X).
  24.  
  25.     run():-
  26.         console::init(),
  27.         file::consult("base.txt", relatives),
  28.         father(X, Y),
  29.            console:: write("отец - ", X, ", ребенок - ", Y), console:: nl,
  30.         fail;
  31.         mother(X, Y),
  32.            console::  write("мать - ", X, ", ребенок - ", Y), console:: nl,
  33.         fail;
  34.         if father("Иван", "Петр") then
  35.           console::   write("\nИван является отцом Петра")
  36.         else
  37.            console::  write("\nИван не является отцом Петра")
  38.         end if,
  39.    %     if father("Иван", Y) then
  40.     %      console::   write("\n Иван является отцом" ,Y) , fail,console:: nl
  41.   %      else
  42.    %        console::  write("\nИван не является отцом",Y),fail,console:: nl
  43.      %   end if,
  44.           male(X),
  45.            console::  write("Мужчина - ", X ), console:: nl,
  46.         fail;
  47.              female(X),
  48.            console::  write("Женщина - ", X ), console:: nl,
  49.         fail;
  50.  
  51.         _ = console:: readLine().
  52.  
  53.  
  54. end implement main
  55.  
  56. goal
  57.     mainExe::run(main::run).

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


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

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

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

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

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

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