Пролог для Пролога?

Если вы регулярно пишете программы Prolog, у вас, вероятно, есть своя собственная библиотека предикатов, на которую вы всегда полагаетесь. Некоторые системы Prolog поставляются с богатым набором предопределенных предикатов, а некоторые нет. Некоторые системы имеют библиотеки, но в большинстве случаев они несовместимы с другими системами. Кроме того, многие существующие библиотеки содержат много редко требуемых предикатов. Но тогда есть пара предикатов, которые "должны" всегда присутствовать. И затем, с тех пор наблюдается некоторый прогресс, как это, и Cor.2 (проект). Почему бы и не здесь?

Итак, каковы ваши любимые предикаты? Это предикаты, которые не определены в ядре ISO.

Для начала: between/3, member/2, length/2, dif/2, maplist/2 ,...

Для DCG: seq//1, iseq//1, ...//0.


Изменить: первый проект пролога Пролога можно найти здесь !
Редактировать: Если вы хотите, чтобы этот вопрос был вновь открыт, проголосуйте за повторное открытие, но также помогите переформулировать вопрос, чтобы он не закрылся снова.

Ответ 1

Очень хороший вопрос. В дополнение к member/2, length/2, maplist/2 (который вы уже предлагаете), я рекомендую transpose/2, как в Haskell. Также memberchk/2, select/3 и append/3. Чтобы помочь пользователям с опросом, вы могли бы предоставить программу Prolog, которая обрабатывает данный файл Prolog термином (предложение clause by), записи, которые предикаты он определяет, отслеживает, какие предикаты он вызывает, и из этого (возможно, необязательно) вычитает предикаты, которые предоставляются библиотеками, которые он явно импортирует? Запуск такой программы в нескольких исходных файлах может послужить хорошей отправной точкой для полезной библиотеки пролога для Prolog.