Перфо.NET — различия между версиями
Материал из ТХАБ.РФ
Дизайнер (обсуждение | вклад) м (→См. также) |
Тест (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
− | Перфо - | + | Перфо - интерпретируемый функциональный язык программирования - русскоязычный вариант языка похожего на [[Scheme]] ([[Lisp]]), унифицированный с языком [[Перфолента]] / 1С /[[OneScript]]. Полностью написан на языке [[Перфолента.NET]] также основан на платформе NET Framework. Пока существует тестовая Альфа версия для внутреннего тестирования участников телеграмм Канала. Расширение .perfo (.перфо ?). В качестве среды разработки используется среда [[[Перфолента.NET]]. |
== Описание языка: == | == Описание языка: == | ||
− | * есть 3 типа сущностей: Идентификаторы, Значения и Списки | + | * есть 3 типа сущностей: '''Идентификаторы''', '''Значения''' и '''Списки''' |
− | * ''' | + | * '''Значениями''' могут быть простые типы: строки, символы, числа, даты, булево (логический тип) и Неопределено, а также созданные во время выполнения объекты и [[делегаты действий]] (ссылки на Действия (функции)) |
** синтаксис значений такой же, как в языке Перфолента: | ** синтаксис значений такой же, как в языке Перфолента: | ||
− | "строка" - строка, "С"с - символ, 4.537 - число, '23.07.2020' - дата, | + | "строка" - строка, "С"с - символ, 4.537 - число, '23.07.2020' - дата, Правда/Ложь/Да/Нет - булево (логическая) , Неопределено |
− | * ''' | + | * '''Идентификатор''' - любой другой набор символов не содержащий пробельных символов: А1, $SYM, !!!Ошибка!!! |
− | * ''' | + | * '''Списки''' состоят из любых сущностей разделенных пробелами и заключенных в круглые скобки: (+ 3 4 5) |
− | ** ''' | + | ** '''Действие''' это '''список''', первым элементом которого является '''идентификатор''', а остальные элементы являются '''параметрами действия''' |
− | (ИдентификаторДействия Параметр1 Параметр2 ... ПараметрН), например | + | (ИдентификаторДействия Параметр1 Параметр2 ... ПараметрН), например: |
− | ** ''' | + | |
− | ** ''' | + | (мин 34 9 100) |
− | ** ''' | + | |
+ | ** '''Идентификатор''' может быть вычисляемым | ||
+ | |||
+ | ((Идент "ИдентификаторДействия") Параметр1 Параметр2 ... ПараметрН) | ||
+ | |||
+ | ** '''Параметр Действия''' может быть любой сущностью или '''последовательностью''' | ||
+ | ** '''Последовательность''' это '''список''' состоящий из любых сущностей ('''Идентификаторы''', '''Значения''' и '''Списки'''), у которого первый элемент НЕ идентификатор. Т.е. все списки это или '''Последовательность''' или '''Действие'''. Пример последовательности: | ||
(Значение1 Значение2 Значение3) или ((Действие1) (Действие2) (Действие3)) или ((Действие1) (Действие2) Значение1) | (Значение1 Значение2 Значение3) или ((Действие1) (Действие2) (Действие3)) или ((Действие1) (Действие2) Значение1) | ||
− | * ''' | + | * '''Оператор''' это специальная форма '''действия''', в которой смысл и назначение параметров, а так же их последовательность выполнения определены стандартом языка, например: |
(Если (Условие) (СписокДействий1) (СписокДействий2)) или (Перем ИмяПеременной Значение) | (Если (Условие) (СписокДействий1) (СписокДействий2)) или (Перем ИмяПеременной Значение) | ||
+ | |||
+ | * '''Делегаты Действий''' - это ссылки на Действия (функции) | ||
Возвращаемые значения: | Возвращаемые значения: | ||
− | * | + | * '''Значение''' возвращает само себя (т.е. Значение) |
− | * | + | * '''Идентификатор''' возвращает сопоставленное ему значение, в том числе, делегат действия, идентификатор или неопределено |
− | * | + | * '''Действие''' может вернуть значение, делегат действия, идентификатор или неопределено |
− | * оператор возвращает то, что определено стандартом языка | + | * '''оператор''' возвращает то, что определено стандартом языка |
− | * последовательность возвращает результат последнего элемента | + | * '''последовательность''' возвращает результат последнего элемента последовательности |
== См. также == | == См. также == | ||
* [[Перфолента.NET]] | * [[Перфолента.NET]] | ||
* [[Перфо (Исходный код)]] языка программирования Перфо на Перфолента.NET | * [[Перфо (Исходный код)]] языка программирования Перфо на Перфолента.NET | ||
+ | == Ссылки == | ||
+ | * https://habr.com/ru/company/tinkoff/blog/267015/ - Введение в Scheme (от Тинькофф Банка) - будет использоваться в качестве заготовки для [[Введения в функциональный язык программирования Перфо]]. | ||
+ | * https://habr.com/ru/hub/funcprog/ - Хабр Функциональное программирование | ||
[[Категория:Язык программирования]] | [[Категория:Язык программирования]] |
Версия 20:31, 6 августа 2020
Перфо - интерпретируемый функциональный язык программирования - русскоязычный вариант языка похожего на Scheme (Lisp), унифицированный с языком Перфолента / 1С /OneScript. Полностью написан на языке Перфолента.NET также основан на платформе NET Framework. Пока существует тестовая Альфа версия для внутреннего тестирования участников телеграмм Канала. Расширение .perfo (.перфо ?). В качестве среды разработки используется среда [[[Перфолента.NET]].
Описание языка:
- есть 3 типа сущностей: Идентификаторы, Значения и Списки
- Значениями могут быть простые типы: строки, символы, числа, даты, булево (логический тип) и Неопределено, а также созданные во время выполнения объекты и делегаты действий (ссылки на Действия (функции))
- синтаксис значений такой же, как в языке Перфолента:
"строка" - строка, "С"с - символ, 4.537 - число, '23.07.2020' - дата, Правда/Ложь/Да/Нет - булево (логическая) , Неопределено
- Идентификатор - любой другой набор символов не содержащий пробельных символов: А1, $SYM, !!!Ошибка!!!
- Списки состоят из любых сущностей разделенных пробелами и заключенных в круглые скобки: (+ 3 4 5)
- Действие это список, первым элементом которого является идентификатор, а остальные элементы являются параметрами действия
(ИдентификаторДействия Параметр1 Параметр2 ... ПараметрН), например:
(мин 34 9 100)
- Идентификатор может быть вычисляемым
((Идент "ИдентификаторДействия") Параметр1 Параметр2 ... ПараметрН)
- Параметр Действия может быть любой сущностью или последовательностью
- Последовательность это список состоящий из любых сущностей (Идентификаторы, Значения и Списки), у которого первый элемент НЕ идентификатор. Т.е. все списки это или Последовательность или Действие. Пример последовательности:
(Значение1 Значение2 Значение3) или ((Действие1) (Действие2) (Действие3)) или ((Действие1) (Действие2) Значение1)
- Оператор это специальная форма действия, в которой смысл и назначение параметров, а так же их последовательность выполнения определены стандартом языка, например:
(Если (Условие) (СписокДействий1) (СписокДействий2)) или (Перем ИмяПеременной Значение)
- Делегаты Действий - это ссылки на Действия (функции)
Возвращаемые значения:
- Значение возвращает само себя (т.е. Значение)
- Идентификатор возвращает сопоставленное ему значение, в том числе, делегат действия, идентификатор или неопределено
- Действие может вернуть значение, делегат действия, идентификатор или неопределено
- оператор возвращает то, что определено стандартом языка
- последовательность возвращает результат последнего элемента последовательности
См. также
- Перфолента.NET
- Перфо (Исходный код) языка программирования Перфо на Перфолента.NET
Ссылки
- https://habr.com/ru/company/tinkoff/blog/267015/ - Введение в Scheme (от Тинькофф Банка) - будет использоваться в качестве заготовки для Введения в функциональный язык программирования Перфо.
- https://habr.com/ru/hub/funcprog/ - Хабр Функциональное программирование