Файл: написать эмулятор предиката RETRACTALL (Запись в файл фактов БД) - Prolog

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

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

Доброго времени суток. Появилась надобность написать эмулятор предиката retractall() для базы данных, без возможности использовать retract. Самое очевидное - записать в файл все факты, и считать все те, не совпадающие с введенным. И так, первым делом я определил предикаты базы данных:
Далее добавил в обе базы факты:
И как только пытаюсь записать в базу данных факты, он каким то непонятным образом записывает сразу же все факты обоих баз данных:
Как избавиться от какой проблемы, и записывать конкретно факты определенной базы данных? И как можно потом считывать факты с помощью consult, избегая определенные? Заранее всем благодарен за ответы!
Забыл упомянуть, используемая среда разработки: Visual Prolog 5.2

Решение задачи: «Файл: написать эмулятор предиката RETRACTALL (Запись в файл фактов БД)»

textual
Листинг программы
facts - source
fact(string)
facts - destination
fact2(string)

Объяснение кода листинга программы

Код, представленный в вопросе, не был предоставлен. Однако, основываясь на информации, которую вы предоставили, можно предположить, что код может быть связан с написанием эмулятора предиката RETRACTALL для системы Prolog. Вот возможный список действий, которые могут быть выполнены в этом коде:

  1. Открыть файл с фактами в качестве источника данных (файл facts).
  2. Создать пустой файл для записи фактов (файл facts_new).
  3. Пройти по каждому факту в файле facts.
  4. Для каждого факта, создать новую строку в файле facts_new.
  5. Записать строку факта из файла facts в новую строку файла facts_new.
  6. Закрыть файл facts_new после записи всех фактов.
  7. Переименовать файл facts_new в facts, перезаписывая исходный файл facts.
  8. Закрыть исходный файл facts. Обратите внимание, что это только предположение, основанное на предоставленной информации. Без конкретного кода невозможно дать точный ответ.

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

12   голосов , оценка 3.75 из 5
Похожие ответы