Обратите внимание, что также работает пустой совокупный инициализатор:
SHELLEXECUTEINFO sexi = {};
char mytext[100] = {};
Вы можете использовать предикат 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).
Вы можете сделать
?- consult(user).
или
?- [user].
и введите после этого предложения, затем завершите ввод символом конца файла (Ctrl-D в Linux, может быть Ctrl-Z в MS-Windows). Это эквивалентно чтению файла, см. документацию по consult / 1 .
assert / 1 и retract / 1 предназначены для предикатов, которые динамически изменяются кодом (т.е. для хранения глобальных данных) , не для обычного программирования.