Файл: написать эмулятор предиката RETRACTALL (Запись в файл фактов БД) - Prolog
Формулировка задачи:
Доброго времени суток. Появилась надобность написать эмулятор предиката retractall()
для базы данных, без возможности использовать retract. Самое очевидное - записать в файл все
факты, и считать все те, не совпадающие с введенным.
И так, первым делом я определил предикаты базы данных:
Далее добавил в обе базы факты:
И как только пытаюсь записать в базу данных факты, он каким то непонятным образом записывает
сразу же все факты обоих баз данных:
Как избавиться от какой проблемы, и записывать конкретно факты определенной базы данных?
И как можно потом считывать факты с помощью consult, избегая определенные?
Заранее всем благодарен за ответы!
Забыл упомянуть, используемая среда разработки: Visual Prolog 5.2
Решение задачи: «Файл: написать эмулятор предиката RETRACTALL (Запись в файл фактов БД)»
textual
Листинг программы
facts - source fact(string) facts - destination fact2(string)
Объяснение кода листинга программы
Код, представленный в вопросе, не был предоставлен. Однако, основываясь на информации, которую вы предоставили, можно предположить, что код может быть связан с написанием эмулятора предиката RETRACTALL для системы Prolog. Вот возможный список действий, которые могут быть выполнены в этом коде:
- Открыть файл с фактами в качестве источника данных (файл
facts
). - Создать пустой файл для записи фактов (файл
facts_new
). - Пройти по каждому факту в файле
facts
. - Для каждого факта, создать новую строку в файле
facts_new
. - Записать строку факта из файла
facts
в новую строку файлаfacts_new
. - Закрыть файл
facts_new
после записи всех фактов. - Переименовать файл
facts_new
вfacts
, перезаписывая исходный файлfacts
. - Закрыть исходный файл
facts
. Обратите внимание, что это только предположение, основанное на предоставленной информации. Без конкретного кода невозможно дать точный ответ.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д