Пролог Создание словарей - PullRequest
1 голос
/ 21 мая 2019

Я понимаю, что Пролог не является объектно-ориентированным языком, и после прочтения нескольких сообщений StackOverflow мне не ясно, возможно ли это, но я решил спросить:

Если у Customer есть и есть только name (атомная строка) и age (целое число), можно ли попросить Пролога привести несколько примеров словарей Customer, учитывая список возможных name с и age диапазон? Фактическое использование будет иметь обширные ограничения на значения словаря.

Например, в идеале я хочу что-то вроде этого

between(18, 60, Customer.age),
member(Customer.name, [jodie, tengyu, adiche, tomoyo, wolfgang]),
Customer = whatisthis{age: What, name: Wot}.

чтобы дать мне что-то вроде

Customer = whatisthis{age: 24, name: tomoyo} ;
Customer = whatisthis{age: 55, name: tengyu} ;
...
...

1 Ответ

3 голосов
/ 22 мая 2019

В SWI-Prolog у вас действительно есть диктанты.Здесь:

?- between(2,3,X), Age is 20*X, member(Name, [tomoyo, tengyu]), Dict = customer{name:Name,
age:Age}.
X = 2,
Age = 40,
Name = tomoyo,
Dict = customer{age:40, name:tomoyo} ;
X = 2,
Age = 40,
Name = tengyu,
Dict = customer{age:40, name:tengyu} ;
X = 3,
Age = 60,
Name = tomoyo,
Dict = customer{age:60, name:tomoyo} ;
X = 3,
Age = 60,
Name = tengyu,
Dict = customer{age:60, name:tengyu}.

Вы можете добавлять и удалять пары ключ-значение из диктов во время выполнения.Единственным ограничением является то, что ключи должны быть атомарными.

Документация находится здесь:

http://www.swi -prolog.org / pldoc / man? Section = bidicts

...