Язык, отражающий диалектически реальный мир должен явно в общей форме различать две типа тэгов-действий: процесс и функция.
Первое -- может приводить к разным результатам при одном порядке действий.
Второе -- имеет всегда одно и то же завершение при одних и тех же входных данных (чистая функция).
Введение чёткого онтологического различия между двумя формами действия в языке prolet позволяет добиться следующих диалектических эффектов:
Это — не просто синтаксическое различие.
Это — отражение диалектики необходимости и случайности, единства и борьбы противоположностей: материи и формы, практики и логики, времени и закона.
В коде на языке prolet различаются два типа тэгов-действий :
(прц ...) — материальный процесс, зависящий от внешних условий, времени, состояния системы.(фн ...) — чистое преобразование, не имеющее побочных эффектов, детерминированное, отвечающее критерию математической функции.| КАТЕГОРИЯ | ПРОЦЕСС | ФУНКЦИЯ |
|---|---|---|
| Природа | Материальный, исторически обусловленный | Формальный, логически детерминированный |
| Зависимость от времени | Да: каждый запуск — новый момент | Нет: время не влияет |
| Побочные эффекты | Допустимы (запись, отправка, изменение) | Запрещены |
| Детерминированность | Нет: может зависеть от шлюзов, состояния | Да: одинаковые входы → одинаковые выходы |
| Онтологический статус | Практика, действие, изменение | Закон преобразования |
| Аналог в реальности | Работа завода, регистрация пользователя | Формула: f(x) = x² |
💬 Процесс — это диалектика материи в движении. Функция — это закон, выделенный из практики.
(прц ОтправитьУведомление
(пользователь @фикс Пользователь сообщение @фикс Сообщение)
-> @фикс Результат КодОшибки
(если (ПроверитьАктивность пользователь)
тогда ((ПодготовитьСообщение сообщение)
(ОтправитьЧерезПочту (ПолучитьПочту пользователь) сообщение)
(ЗаписатьЖурнал "Уведомление отправлено"))
)
)
Может возвращать разные результаты при одинаковых пользователь и сообщение:
Имеет побочные эффекты:
Зависит от времени и состояния системы.
❗ Это — не функция, а практика социального взаимодействия.
(фн ПолучитьКвадрат (x @фикс Число) -> @фикс Число)
(Умножить x x))
(фн ФорматироватьИмя (имя @фикс Имя фамилия @фикс Фамилия) -> @фикс Текст)
(Соединить фамилия " " имя))
x всегда вернёт одинаковый результат.✅ Это — чистое преобразование, заимствованное из логического дискурса, но вписанное в практику как инструмент.
prolet| ПРАВИЛО | ФОРМУЛИРОВКА |
|---|---|
| 1 | процесс -- действие, зависящее от материи и времени, может давать разные результаты |
| 2 | функция -- чистое преобразование, всегда одинаковый результат при одинаковых входах |
| 3 | функция не может вызывать процесс (иначе — не чистая) |
| 4 | процесс может использовать функцию (как инструмент преобразования) |
| 5 | функция не имеет побочных эффектов |
| 6 | процесс может иметь побочные эффекты (запись, отправка, изменение) |
| 7 | функция может быть встроена в процесс, но не наоборот |
(прц ОбновитьПрофиль (пользователь @мут Пользователь
имя_новое @фикс Имя
фамилия_новая @фикс Фамилия) -> Результат
(если (ПроверитьПрава пользователь)
тогда (
((ФорматироватьИмя имя_новое фамилия_новая) -> полноеИмя @фикс)
(СохранитьБаза пользователь полноеИмя))
)
)
Здесь:
Нотация следует духу диалектического материализма:
В этой части установлено ключевое онтологическое различие:
prolet больше не смешивает форму и содержание.
Он разделяет их — чтобы соединить на высшем уровне.