Как определить предикат в прологе

Обратите внимание, что также работает пустой совокупный инициализатор:

SHELLEXECUTEINFO sexi = {};
char mytext[100] = {};
6
задан Nathan 3 December 2009 в 23:42
поделиться

2 ответа

Вы можете использовать предикат assert / 1 :

?- assert(adjacent(1,4)).
true

EDIT: Кстати, это не сработает, если вы попытаетесь объединить это с предикатами, определенными в файле. So either define all adjacent/2 predicates in your file, are define them all with assert in the command line.

If you do want to define some of the predicates in the file, and others with assert, then declare in your file that the predicate is dynamic:

% file contents
:- dynamic(adjacent/2).
adjacent(1,2).
adjacent(1,3).
12
ответ дан 8 December 2019 в 14:43
поделиться

Вы можете сделать

?- consult(user).

или

?- [user].

и введите после этого предложения, затем завершите ввод символом конца файла (Ctrl-D в Linux, может быть Ctrl-Z в MS-Windows). Это эквивалентно чтению файла, см. документацию по consult / 1 .

assert / 1 и retract / 1 предназначены для предикатов, которые динамически изменяются кодом (т.е. для хранения глобальных данных) , не для обычного программирования.

4
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: