Язык программирования Перфолента.Net - Официальный сайт

 Язык программирования Перфолента.Net - Официальный сайт.

Поиск   
Главная :: О проекте :: Контакты :: Обратная связь :: Благодарности :: ВходГость

   >   >   > 


Пример «Каррирование»

Файлы:

  • Синтаксис языка
    • Функции
      • Каррирование.перфо

Пример программы на языке программирования Перфо:



//Эта программа написана на языке программирования Перфо
//для демонстрации приёма Каррирование 

//Каррирование — преобразование функции от многих аргументов в набор вложенных функций, 
//каждая из которых является функцией от одного аргумента. 

//изначально существует функция с двумя параметрами
(функция (сумма А Б)
    (+ А Б)
)
//тест
(вывод "(сумма 1 10) = " (сумма 1 10) пс) // возвращает 11

//мы хотим получить возможность предварительно задавать один параметр,
//получая при этом новую функцию, принимающую только второй параметр

(Функция (сумматор А)          // возвращает замкнутое лямбда-выражение, где:
  (Функ (Б)                    // А - параметр принимающий значение, которое будет захваченно лямбда-выражением во время его создания,
    (+ А Б))                   // Б - параметр получаемого лямбда-выражения
)                               

(Перем плюс1 (сумматор 1))            // делаем функцию для прибавления 1 и сохраняем её в переменную
(вывод "(плюс1 5) = " (плюс1 5) пс)   // возвращает 6
(вывод "(плюс1 10) = " (плюс1 10) пс) // возвращает 11

(Перем минус1 (сумматор -1))            // делаем функцию для вычитания 1 и сохраняем её в переменную
(вывод "(минус1 5) = " (минус1 5) пс)   // возвращает 4
(вывод "(минус1 10) = " (минус1 10) пс) // возвращает 9


//*******************************************
//то же самое для функции с тремя параметрами
//*******************************************

//изначально существует функция с тремя параметрами
(функция (СуммаСУмножением А Б К)
    (* (+ А Б) К)
)
//тест
(вывод "(СуммаСУмноженим 2 3 4) = " (СуммаСУмножением 2 3 4) пс) // возвращает 20

//мы хотим предварительно задавать коэффициет умножения

(Функция (УмножительСуммы К)   // возвращает замкнутое лямбда-выражение, где:
  (Функ (А Б)                  // К - параметр принимающий значение, которое будет захваченно лямбда-выражением во время его создания,
    (* (+ А Б) К))             // А и Б - параметры получаемого лямбда-выражения  
)                   

(Перем умнож2 (УмножительСуммы 2))            // делаем функцию умножения суммы на 2 и сохраняем её в переменную
(вывод "(умнож2 5 6) = " (умнож2 5 6) пс)     // возвращает 22
(вывод "(умнож2 10 20) = " (умнож2 10 20) пс) // возвращает 60

(Перем умнож10 (УмножительСуммы 10))            // делаем функцию умножения суммы на 10 и сохраняем её в переменную
(вывод "(умнож10 5 6) = " (умнож10 5 6) пс)     // возвращает 110
(вывод "(умнож10 10 20) = " (умнож10 10 20) пс) // возвращает 300



К началу статьи


Вернуться в раздел:
Примеры по языку Перфо

Перейти в раздел:
Примеры
  Поддержи проект!

Вы можете поддержать разработку Перфоленты, перечислив любую удобную сумму, которая пойдет на развитие языка и поддержку инфраструктуры сайта.

  Новости:
      21.01.2026 На сайт добавлена статья "Конструируем класс. События"
      20.01.2026 Опубликован новый релиз 0.4.18.0_NY языка программирования Перфолента.Net
      29.12.2025 Анонс: Новая возможность - разрабатываем веб-сайты, веб-приложения и веб-API на Перфоленте!
      07.06.2025 Небольшие дополнения к документации на сайте - описание атрибута поля &Атомарное
      09.05.2025 На сайте опубликован релиз 0.4.16.0_SE дистрибутива языка программирования Перфолента.Net
      27.04.2025 Дополнена статья про циклы
      04.01.2025 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.15.0_CE
      23.09.2024 Опубликована новая статья: "Конструируем класс. Делегаты."
      30.08.2024 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.14.0
      24.05.2024 Обновлён справочный раздел сайта
      01.07.2023 Новая версия 0.4.13.0 языка программирования Перфолента.Net
       Все новости