Вход в систему

Консульство Овалон-2

Навигация

Новый подход к Искуственному Интеллекту "Экскалибур-2013"

Встроенные функции «Экскалибур-2013».
Примечание: Согласно терминологии Лисп, функции бывают типа SUBR (все аргументы функции вычисляются перед ее вызовом), и FSUBR (аргументы не вычисляются, а передаются в тело функции).
Эта терминология применяется и в Э. Таким образом в Э функция c именем f типа FSUBR вида (f A (+ 1 2 3)) аналогична функции f1 типа SUBR вида (f1 _A ( (+ 1 2 3) ) )
Примечание: Пример, поясняющий отличие SUBR и FSUBR
Допустим, пользователь уже определил (условно) функции SUBR Печатать_1 и FSUBR Печатать_2 , как функции, выполняющие вывод Собщения в диалоговое окно. То есть, выполняющие то же, что и Сообщение вида (! …)
Тогда
(Печатать_1 (+ 1 2 3) ) → 5
(Печатать_2 (+ 1 2 3) ) → (+ 1 2 3)

Функции, определяющие значения Слов-символов.
Set
- устанавливает отношение присвоения «=» между Словом-объектом (или его свойством) и Значением объекта или свойства. Тип SUBR:
(Set X 10) (Set Слон.Вес 3000)
Примечание: Любое число пар аргументов:
(Set A 10
B 20
….)
SetQ
- устанавливает отношение присвоения«=» между Словом (или его свойством) и Значением. Тип FSUBR:
(SetQ X 10) (SetQ Слон.Вес 3000)
Примечание: Любое число пар аргументов.
Пример 2-х пар: (SetQ X 10 А 15)

Синтаксис Data Add Eras

Data-
вводит блок данных на уровне определение условия задачи:
(Data X 12 Y 14 A 18 …)

Add
в отличии от Set, SetQ и Data добавляет для X значение, сохраняя при этом прежние значения.
(Add X 12 14 48 …)

Eras
удаляет конкретно указанное значение у X
(Eras X 12 4 48 …)

Функции диалога и передачи-приема сообщений
!
– Тип SUBR открывает диалоговое окно «вывод-ответ» и выводит в него список результатов сообщений , разделяя их пробелом:
(! “3 * 4 =” (* 3 4) ) --> 3 * 4 = 12
?
– открывает диалоговое окно «ввод-вопрос» и выводит в него список результатов сообщений , разделяя их пробелом. Формирует запрос к пользователю: ввести сообщение в строку ввода в этом же окне. Пример:
(Set X (? «Введите Х»))
Msg
- эта функция работает с мульти-задачным диспетчером диалогов, служит для отправки сообщений из текущей задачи. Выводит сообщение, как и при вызове (!...), но направляет его в очередь диалогов. Сообщение будет выдано в окне диалога, согласно очередности задач, требующих вывода сообщения. (Особенность: выводит только одно Слово)
Подробности:
В Э задачи могут обмениваться сообщениями только в асинхронном режиме.
Задача, посылающая сообщение называется (имеет имя) Sender (отправитель), а ее адресат имеет имя Recipient (получатель). Сообщение может иметь произвольную структуру и называется Message (посылка).
Синтаксис: (Msg (сообщение-посылка) (Sender) (Recipient)).
Для отправки сообщения другой задаче, нужно указать ее имя в перечне активных задач.
(Msg 12 “Площадь_Круга”) - в данном примере задаче “Площадь_Круга” послано число 12.

Адресное сообщение гарантированно достигнет адресата, когда он готов его принять.
Если указать имя “All” , будут посланы сообщения всем задачам, которые готовы его принять. Однако Общее сообщение может быть пропущено теми задачами, которые в данный момент ожидают сообщение от конкретного источника.
Существует зарезервированное слово “Terminal”, адресующее сообщение окну “Диалог”, которое можно не указывать.

Сообщение для Терминала будет выдано в окне “Диалог”, в порядке определяемом очередью задач, выводящих сообщение:
(Msg «Привет! Я Экскалибур»)
Внимание:
Существуют сообщения, которые имеют служебное назначение:
die - уничтожение задачи получателя
синтаксис: die (Recipient)
reboot - перезагрузка задачи (функции сохраняются)
синтаксис: reboot(Имя задачи)

Rambler

Сейчас на сайте

Сейчас на сайте 0 пользователей и 0 гостей.