Такая функция обычно включена в системы Prolog.Это заставляет меня думать, что это произвольное домашнее задание, и мне интересно, каковы правила.Предположительно, вы не можете вызвать set_difference.Вы можете использовать member / 2?Списки отсортированы или нет?Должна ли функция работать во всех режимах (+++, ++ -, - ++, + - +) и возвращаться назад для создания альтернативных ответов?
Если делать такую функцию с нуля, лучшим подходом являетсядумать по-английски и мыслить индуктивно.
Как вы отвечаете на простейший случай: разница между двумя пустыми списками - это пустой список.разность ([], [], []).Что, если вы добавите в один из списков?К другому?Каждый ответ получает предложение.
Кроме того, ответ зависит от правил назначения.