|
@@ -25,13 +25,20 @@ LOMO (language of message objects) язык декларативный, моду
|
|
|
|
|
|
### Встроенные типы
|
|
|
|
|
|
-Встроенными типами являются `INTEGER`, `REAL`, `BOOLEAN`, `TRILEAN`, `CHAR`, `STRING`, `ATOM`, `COMPLEX`.
|
|
|
+Встроенными типами являются `INTEGER`, `REAL`, `BOOLEAN`, `TRILEAN`, `CHAR`, `STRING`, `ATOM`, `COMPLEX`, `ANY`.
|
|
|
|
|
|
### Модуль это тип.
|
|
|
|
|
|
Идентификатор модуля может являться типом переменной, такой тип называется *сторонним* и представляет возможности использовать переменную в качестве экземпляра модуля (т.е. в качестве агента).
|
|
|
Доступ к экспортированным переменным осуществляется с помощью селектора `.`.
|
|
|
-
|
|
|
+
|
|
|
+#### Инфиксная запись
|
|
|
+Для некоторых модулей удобна инфиксная запись передачи сообщений и получения ответного сообщения. Такая запись позволит использовать модули в качестве сложных пользовательских операторов.
|
|
|
+
|
|
|
+Пример инфиксной записи при использовании модуля `Max` (выбор наибольшего из двух чисел:
|
|
|
+
|
|
|
+ 5 \Max 9 -> max
|
|
|
+
|
|
|
## Инструкции
|
|
|
|
|
|
### Присваивание
|
|
@@ -40,10 +47,10 @@ LOMO (language of message objects) язык декларативный, моду
|
|
|
|
|
|
Пример присваивания:
|
|
|
|
|
|
-````
|
|
|
-0 -> x
|
|
|
-x + 1 -> y
|
|
|
-````
|
|
|
+
|
|
|
+ 0 -> x
|
|
|
+ x + 1 -> y
|
|
|
+
|
|
|
|
|
|
Каждой переменной может быть присвоено только одно значение.
|
|
|
|
|
@@ -59,7 +66,40 @@ x + 1 -> y
|
|
|
|
|
|
Пример тернарного оператора:
|
|
|
|
|
|
-````
|
|
|
-x > 0 ? 1 : 0 -> y
|
|
|
-x > 0 ? 1 : x < 0 : -1 : 0 -> y
|
|
|
-````
|
|
|
+ x > 0 ? 1 : 0 -> y
|
|
|
+ x > 0 ? 1 : x < 0 : -1 : 0 -> y
|
|
|
+
|
|
|
+## Селектор
|
|
|
+Селектор это конструкция, позволяющая обращаться к внутреннему содержимому объекта.
|
|
|
+
|
|
|
+Например, к конкретному символу в строке:
|
|
|
+
|
|
|
+ string[i] -> char
|
|
|
+
|
|
|
+### Простой селектор
|
|
|
+
|
|
|
+Простой селектор содержит одно выражение.
|
|
|
+
|
|
|
+ string[i]
|
|
|
+ str[2+i*2]
|
|
|
+
|
|
|
+### Составной селектор
|
|
|
+
|
|
|
+Составной селектор содержит два и более выражений, разделенных запятой.
|
|
|
+
|
|
|
+ string[0, 1, 2, 3]
|
|
|
+
|
|
|
+### Селектор диапазона
|
|
|
+
|
|
|
+Селектор диапазона содержит два значения, разделенные символом `..`, что указывает на обращение по всему диапазону значений с шагом равным `1`.
|
|
|
+
|
|
|
+ string[0 .. 4]
|
|
|
+ string[4 .. 0]
|
|
|
+
|
|
|
+При этом возможно указывать диапазоны как в сторону уменьшения, так и в сторону увеличения значений, таким образом обеспечивается возможность комбинировать значения.
|
|
|
+
|
|
|
+### Открытый диапазон
|
|
|
+
|
|
|
+Селектор открытого диапазона позволяет выбрать значения начиная с заданного до неизвестного предела (только в сторону увеличения).
|
|
|
+
|
|
|
+ string[1 ..]
|