Я только начал играть с core.logic, и для работы над ним я пытаюсь реализовать что-то простое, похожее на проблему, над которой я сейчас профессионально работаю.Однако одна часть проблемы поставила меня в тупик ...
В качестве упрощения моего примера, если у меня есть каталог предметов, и некоторые из них доступны только в определенных странах, а некоторые недоступныв конкретных странах.Я хотел бы иметь возможность указать список элементов и исключений, например:
(defrel items Name Color)
(defrel restricted-to Country Name)
(defrel not-allowed-in Country Name)
(facts items [['Purse 'Blue]
['Car 'Red]
['Banana 'Yellow]])
(facts restricted-to [['US 'Car]])
(facts not-allowed-in [['UK 'Banana]
['France 'Purse]])
Если возможно, я бы предпочел не указывать разрешенный для всех стран, как набор элементовс ограничениями относительно невелик, и я хотел бы иметь возможность внести одно изменение, чтобы разрешить / исключить элемент для данной страны.
Как мне написать правило, которое дает список элементов /цвета для страны со следующими ограничениями:
- Элемент должен быть в списке элементов
- Страна / элемент не должны быть в недопустимом'list
- Либо:
- Нет страны в списке запрещенных для этого элемента
- Пара стран / предметов находится в списке запрещенных
Есть ли способ сделать это?Думаю ли я о вещах совершенно неправильно?