Перфо.NET — различия между версиями
Материал из ТХАБ.РФ
Тест (обсуждение | вклад) м |
Степпер (обсуждение | вклад) м (→См. также) |
||
(не показано 18 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | Перфо - интерпретируемый функциональный язык программирования - русскоязычный вариант языка похожего на [[Scheme]] ([[Lisp]]), унифицированный с языком [[Перфолента]] / 1С /[[OneScript]]. Полностью написан на языке [[Перфолента.NET]] также основан на платформе NET Framework. Пока существует | + | Перфо - интерпретируемый функциональный язык программирования - русскоязычный вариант языка похожего на [[Scheme]] ([[Lisp]]), унифицированный с языком [[Перфолента]] / 1С /[[OneScript]]. Полностью написан на языке [[Перфолента.NET]] также основан на платформе NET Framework. Пока существует Бетта-версия для внутреннего тестирования участников телеграмм-канала. |
+ | * Расширение .perfo (.перфо). В качестве среды разработки используется среда [[Перфолента.NET]]. | ||
+ | * Последняя версия Перфо 0.49.1 от 29.11.2020 | ||
+ | * В версии 0.49.1 реализовано частичное применение функций и добавлен оператор [[Препроцессор языка Перфо|препроцессора]] #'''ВключитьФайл''' - что позволяет создавать библиотеки | ||
+ | * В версии 0.48.1 реализован оператор map, частичное применение функций (каррирование, https://habr.com/ru/post/518692/) | ||
+ | * в версии 0.47 реализован оператор Список (list) | ||
+ | |||
+ | * [[Перфо. Что Сделать. Известные Ошибки]] | ||
== Описание языка: == | == Описание языка: == | ||
* есть 3 типа сущностей: '''Идентификаторы''', '''Значения''' и '''Списки''' | * есть 3 типа сущностей: '''Идентификаторы''', '''Значения''' и '''Списки''' | ||
Строка 36: | Строка 43: | ||
* '''оператор''' возвращает то, что определено стандартом языка | * '''оператор''' возвращает то, что определено стандартом языка | ||
* '''последовательность''' возвращает результат последнего элемента последовательности | * '''последовательность''' возвращает результат последнего элемента последовательности | ||
+ | |||
+ | === Важно === | ||
+ | * Если использовать ключевое слово '''Число''' в качестве переменой: - в Перфо ключевых слов как таковых нет... если вы использовали одно из "ключевых слов" как имя функции или переменной, значит вы переопределили его назначение... | ||
+ | * Типы данных: Цитата: "В языке Scheme поддерживается ряд встроенных типов данных, таких как числовые типы, строковый тип, символьный тип, структурные типы (пара (pair), список и вектор) и некоторые другие, а также встроенные функции для работы со значениями этих типов." | ||
+ | разработчик Перфо расширил этот список и добавил в него все встроенные типы данных [[Перфолента.NET]]. | ||
+ | * в Перфо можно использовать многострочные строки.... т.е. вот так: | ||
+ | это первая строка текста | ||
+ | это вторая строка текста | ||
+ | это третья строка текста | ||
+ | |||
+ | вот в таких строках сейчас нельзя использовать комментарии! | ||
== См. также == | == См. также == | ||
+ | * [[Учебник языка Перфо для школьников]] переделка учебника [[Scheme]] - наиболее полное в настоящий момент описание Перфо 0.4.9.1 | ||
+ | * [[Введение в функциональный язык программирования Перфо]] | ||
+ | * [[Скрипты и программы на языке Перфо]] | ||
* [[Перфолента.NET]] | * [[Перфолента.NET]] | ||
* [[Перфо (Исходный код)]] языка программирования Перфо на Перфолента.NET | * [[Перфо (Исходный код)]] языка программирования Перфо на Перфолента.NET | ||
+ | * [[Функциональное программирование]] | ||
+ | |||
== Ссылки == | == Ссылки == | ||
* https://habr.com/ru/company/tinkoff/blog/267015/ - Введение в Scheme (от Тинькофф Банка) - будет использоваться в качестве заготовки для [[Введения в функциональный язык программирования Перфо]]. | * https://habr.com/ru/company/tinkoff/blog/267015/ - Введение в Scheme (от Тинькофф Банка) - будет использоваться в качестве заготовки для [[Введения в функциональный язык программирования Перфо]]. | ||
Строка 49: | Строка 72: | ||
[[Категория:Перфолента.NET]] | [[Категория:Перфолента.NET]] | ||
[[Категория:Перфо]] | [[Категория:Перфо]] | ||
+ | [[Категория:Функциональное программирование]] |
Текущая версия на 12:08, 15 декабря 2022
Перфо - интерпретируемый функциональный язык программирования - русскоязычный вариант языка похожего на Scheme (Lisp), унифицированный с языком Перфолента / 1С /OneScript. Полностью написан на языке Перфолента.NET также основан на платформе NET Framework. Пока существует Бетта-версия для внутреннего тестирования участников телеграмм-канала.
- Расширение .perfo (.перфо). В качестве среды разработки используется среда Перфолента.NET.
- Последняя версия Перфо 0.49.1 от 29.11.2020
- В версии 0.49.1 реализовано частичное применение функций и добавлен оператор препроцессора #ВключитьФайл - что позволяет создавать библиотеки
- В версии 0.48.1 реализован оператор map, частичное применение функций (каррирование, https://habr.com/ru/post/518692/)
- в версии 0.47 реализован оператор Список (list)
Содержание
Описание языка:
- есть 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)) или (Перем ИмяПеременной Значение)
- Делегаты Действий - это ссылки на Действия (функции)
Возвращаемые значения:
- Значение возвращает само себя (т.е. Значение)
- Идентификатор возвращает сопоставленное ему значение, в том числе, делегат действия, идентификатор или неопределено
- Действие может вернуть значение, делегат действия, идентификатор или неопределено
- оператор возвращает то, что определено стандартом языка
- последовательность возвращает результат последнего элемента последовательности
Важно
- Если использовать ключевое слово Число в качестве переменой: - в Перфо ключевых слов как таковых нет... если вы использовали одно из "ключевых слов" как имя функции или переменной, значит вы переопределили его назначение...
- Типы данных: Цитата: "В языке Scheme поддерживается ряд встроенных типов данных, таких как числовые типы, строковый тип, символьный тип, структурные типы (пара (pair), список и вектор) и некоторые другие, а также встроенные функции для работы со значениями этих типов."
разработчик Перфо расширил этот список и добавил в него все встроенные типы данных Перфолента.NET.
- в Перфо можно использовать многострочные строки.... т.е. вот так:
это первая строка текста это вторая строка текста это третья строка текста
вот в таких строках сейчас нельзя использовать комментарии!
См. также
- Учебник языка Перфо для школьников переделка учебника Scheme - наиболее полное в настоящий момент описание Перфо 0.4.9.1
- Введение в функциональный язык программирования Перфо
- Скрипты и программы на языке Перфо
- Перфолента.NET
- Перфо (Исходный код) языка программирования Перфо на Перфолента.NET
- Функциональное программирование
Ссылки
- https://habr.com/ru/company/tinkoff/blog/267015/ - Введение в Scheme (от Тинькофф Банка) - будет использоваться в качестве заготовки для Введения в функциональный язык программирования Перфо.
- https://habr.com/ru/hub/funcprog/ - Хабр Функциональное программирование