Пролог для Пролога?
Если вы регулярно пишете программы 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.