Описание тега meta-predicate
A meta predicate is a predicate that contains an argument defined over predicates or related to some module. In many Prolog systems, such predicates are declared with a directive (meta_predicate)/1.
2
ответа
Пролог GNU - оператор Univ? Объяснение этого
Итак, унив оператор. Я не совсем понимаю это. Например это: foo(PredList,[H|_]) :- bar(PredList,H). foo(PredList,[_|T]) :- foo(PredList,T),!. bar([H|_],Item) :- G =.. [H,Item],G. bar([_|T],Item) :- bar(T,Item). Что это делает? Это выглядит, чтобы ув…
09 ноя '10 в 00:41
2
ответа
Абстрагируясь над предикатами
Упражнение, которое я пробую, начинается со следующих фактов byCar(auckland,hamilton). byCar(hamilton,raglan). byCar(valmont,saarbruecken). byCar(valmont,metz). byTrain(metz,frankfurt). byTrain(saarbruecken,frankfurt). byTrain(metz,paris). byTrain(s…
26 фев '17 в 17:15
1
ответ
Как установить домен парной переменной в CSP в Sicstus Prolog
Я использую Sicstus Prolog и пытаюсь разгадать загадку Domino. У меня есть список с тройками, которые мне нужно установить домен. Я знаю, как задать домен одной переменной или список отдельных переменных, но как я могу это сделать, если в моем списк…
16 дек '16 в 12:27
3
ответа
Определение пути / тропы / прогулки
Многие предикаты определяют своего рода ациклический путь, построенный из ребер, определенных через бинарное отношение, очень похоже на определение транзитивного замыкания. Таким образом, требуется общее определение. Обратите внимание, что понятия, …
19 май '15 в 14:24
1
ответ
Пролог Предикат понижения высшего порядка
Мы можем определить предикат карты высшего порядка как: map([], [], F). map([A|As], [B|Bs], F) :- call(F, A, B), map(As, Bs, F). Точно так же мы можем определить сгиб (слева) как: fold([], Acc, Acc, _F). fold([A|As], B, Acc1, F) :- call(F, Acc1, A, …
24 янв '16 в 21:15
2
ответа
Использование пролога =.. предикат
Я работаю над упражнением, в котором пытаюсь использовать предикат =.., чтобы написать процедуру, которая удаляет все элементы в List, для которых PredName(X) завершается ошибкой, и возвращает оставшийся список как Result: filter(List, PredName, Res…
29 июл '16 в 12:27
1
ответ
maplist с параметризованным предикатом
Можно ли использовать параметризованный предикат в mapList? Например, я хотел бы сделать следующее: по списку, и для каждого четного элемента (список содержит только числа) сопоставить этот элемент с некоторым значением (это значение задается параме…
26 май '16 в 16:45
2
ответа
Пролог, определите, является ли граф ациклическим
Мне нужно определить предикат acyclic/1, который принимает граф в качестве входных данных и определить, является ли этот граф ациклическим. Так что из моего понимания graph1(a,b). graph1(b,c). graph1(c,a). Вернется нет и graph2(a,b). graph2(b,c). ве…
16 ноя '14 в 21:35
3
ответа
Наиболее общее ограничение высшего порядка, описывающее последовательность целых чисел, упорядоченных относительно отношения
В CLP(FD) нам часто нужно указывать: "Это список целых чисел и переменных конечной области в (иногда: строго) порядке возрастания / убывания". Существует ли какая-либо система CLP(FD), которая обеспечивает общее (параметризуемое) встроенное ограниче…
18 ноя '14 в 09:26
2
ответа
Почему мы используем '!' в прологе
Это код, который я пытаюсь понять. co(X) :- co(X,[],L). co([],A,A):- write(A). co([X|Xs], A, L) :- p(X-Z,A,R), !, Z1 is Z+1, co(Xs, [X-Z1|R], L). co([X|Xs], A, L) :- co(Xs, [X-1|A], L). p(X-Y,[X-Y|R],R):- !. p(X,[H|Y], [H|Z]) :- p(X,Y,Z). Какая поль…
14 ноя '14 в 10:15
4
ответа
Арифметический расчет в Прологе по спискам
В настоящее время мы работаем над реализацией предиката сокращения, которое должно взять список L, двоичную функцию F, которая работает с элементами L и имеет нейтральный элемент N и отображает их в число E, полученное путем применения F к элементы …
24 май '17 в 17:00
6
ответов
Пролог: фильтрация списка?
В настоящее время я работаю над очень коротким проектом на Прологе, и просто застрял, пытаясь применить созданный мной "фильтр" к списку. У меня есть то, что вы могли бы назвать фильтром готовым, но я не могу его применить. Было бы лучше, если бы я …
18 ноя '08 в 06:24
2
ответа
Парное отношение над списком
Следующий предикат высшего порядка успешно выполняется, если все пары элементов списка верны для данного отношения. Есть общее или лучшее, более намеренное раскрытие имени для этого отношения? Моя первоначальная мотивация для этого имени заключалась…
08 апр '14 в 23:29
3
ответа
Обратный поиск в Прологе? (Как я могу найти все, что правда о X?)
Итак, допустим, у меня есть следующее в базе данных Prolog: person(john). person(mary). happy(john). Ясно, что если я хочу перечислить всех людей, я могу напечатать: person(X). Но что, если я хочу найти все то, что правда о Джоне? Я не могу сделать:…
16 авг '10 в 06:16
2
ответа
Могу ли я добавить список аргументов в call/2?
Вызов (Goal,Arg) позволяет добавить аргумент Arg к аргументам Goal и вызвать полученную цель, например call(succ(1), R). такой же как succ(1, R). Тем не менее, я не хочу добавлять в список аргументов, а вместо этого добавить, например, callpre(succ…
21 окт '16 в 10:15
1
ответ
Модуль расширения целей, передаваемых в библиотечные мета-предикаты
Используя SWI-Prolog (многопоточный, 64 бита, версия 7.3.5), мы продвигаемся шаг за шагом: Определить DCG нетерминал a//1 в модуле dcgAux (произносится: " ди-с-го "): : - модуль (dcgAux,[a//1]). a(0) -> []. a(s(N)) -> [a], a(N). Запустите следующие …
21 авг '15 в 13:10
0
ответов
Reified call_with_time_limit / call_with_inference_limit
Я пытаюсь определить отношение callto_status(Goal, Status) это всегда успешно и объединяет статус в соответствии с результатом вызова Goal (другими словами, я хотел бы реализовать call_with_inference_limit/3). Моя реализация использует SWI call_with…
13 фев '19 в 19:48
1
ответ
Удалить элемент из нескольких списков
У меня есть подзадача, решение которой намного больше, чем необходимо. Проблема определяется следующим образом Удалить X из всех групп, где группа имеет идентификатор между Y и Z или A и B выражается как псевдопросмотр, это выглядит так с Y,Z,A,B, у…
08 фев '16 в 18:37
2
ответа
Определение, связан ли граф в прологе
Мне нужно сделать предикат isConnected/1 он принимает граф в качестве аргумента и определяет, существует ли ненаправленный путь между парами. Предположим, у меня есть список ребер (где G это график): isEdge(G,1,2). isEdge(G,2,3). isEdge(G,4,5). Так …
17 ноя '14 в 02:53
3
ответа
Как мне кодировать rec/3 при наличии объявления meta_predicate?
У меня есть следующий код, который отлично работает без объявления meta_predicate. Я определил предикат rec/3 следующим образом: :- use_module(library(lambda)). rec(F,1,F). rec(F,N,\A^B^(call(F,A,H),call(G,H,B))) :- N>1, M is N-1, rec(F,M,G). Пре…
25 июн '14 в 07:25