Я пытаюсь написать инструмент для рисования схем в Python. Я создаю простую базу данных на основе словарей, которая содержит все компоненты и их свойства. Я также пытаюсь создать простой язык запросов, где вы можете выбрать, например, все резисторы со значением> 100 Ом или footprint = '0402'
Пока что я могу выбирать вещи, используя примитивный поиск предикатов, а затем объединение и пересечение для более сложных вещей.
Однако мне сложно определить, какой должна быть семантика для чисто отрицательного поиска. Например, что-то вроде
footprint! = '0402'
должен выбрать все элементы с площадью, не равной 0402. Но выполнение этого только с пересечением дает мне пустой результат. Чтобы это работало, мне нужно выбрать все компонентов, а затем пересечь «not 0402», чтобы удалить те, которые мне не нужны.
Но это похоже на грубую силу и похоже на рыбное решение. Я не заинтересован в использовании "реальной" базы данных и языка запросов, поэтому, пожалуйста, не предлагайте это. Я ищу здесь правильное инженерное обоснование, а не решение этой проблемы.
Эта проблема была в некоторой степени освещена в книге SICP, но я очень запутался, поскольку думаю, что они также использовали продолжения и прочее, чего я пока не понимаю.
Может кто-нибудь объяснить, каким должно быть «правильное» использование для отрицательного выбора материала. Я попробовал это в коммерческом инструменте cad, и он работал как ожидалось, но затем я увидел несколько примеров SQL-запросов (я думаю), которые выбирали вещи сначала , а затем удаляли ненужные.
спасибо
майкл