Я только начал играть с 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]])
Если возможно, я бы предпочел не указывать разрешенный вход для всех стран, поскольку набор элементов с ограничениями относительно невелик, и я хотел бы иметь возможность внести одно изменение, чтобы разрешить / исключить элемент для данной страны.
Как написать правило, которое дает список элементов / цветов для страны со следующими ограничениями:
Есть ли способ сделать это? Я думаю о вещах совершенно неправильно?