Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Basic Concepts

Boost , ,

Basic Concepts

Все является функцией (актером класса) в рамках Феникса, которая может быть оценена как f(a..n), где n — это аритмия функции, или количество аргументов, которые ожидает функция. Операторы также выполняют функции. Например, a + b — это просто функция с arity == 2 (или двоичная). a + b - это то же самое, что плюс (a, b), a + b + c - это то же самое, что плюс (плюс (a, b), c). plus (плюс (a, b), c) - это троичная функция (arity == 3).

Забавно, что даже функции возвращают функции. Посмотрим, что это значит за короткое время.

Карри, названный в честь знаменитого ЛогикаХаскеллКарри является одним из важных механизмов в дисциплине программирования, известной как функциональное программирование. Существует много теорий, окружающих концепции, стоящие за ним, однако, в самом простом термине, можно с уверенностью предположить, что функция более или менее похожа на частичную оценку функции. Возьмем простую псевдофункцию C++:

    plus(x, y) { return x + y; }

Например. Полная оценка функции «плюс» выше осуществляется путем подачи аргументов для x и y. Например:

    plus(3, 2)

Мы получим 5. С другой стороны, частичную оценку можно рассматривать как вызов функции, не приводя всех аргументов. Вот пример воображаемого (не C++):

    plus(?, 6)

Что это означает и каков результат функции? Во-первых, вопросительный знак заявляет, что у нас еще нет этого аргумента, пусть это будет представлено позже. Но есть и второй аргумент – 6. Теперь, в то время как полностью оцененная функция плюс (3, 2) приводит к фактическому вычисленному значению 5, частично оцененная функция плюс (?), 6) приводит к другой (неназванной) функции (функции более высокого порядка). В FP неназванная функция называется лямбда-функцией, на этот раз лямбда-функция ожидает одного меньшего аргумента:

    plus(3, 2) --> 5
    plus(?, 6) --> unnamed_f_x_plus_6(x)

Теперь мы можем использовать unnamed_f_x_plus_6, который является результатом выражения plus(?, 6) как функция с одним аргументом. Таким образом:

    plus(?, 6)(3) --> 9

Это можно понимать как:

    | plus(?, 6) | (3) |
    |_____f1_____|     |
    |_____f2___________|
  • f1 является результатом частичной оценки плюса (?), 6)
  • f2 является результатом полностью оцененной функции, проходящей 3, где f1 имеет ? заполнитель, таким образом плюс (3, 6)

То же самое можно сделать с операторами. Например, приведенный выше пример эквивалентен:

        3 + 2 --> 5
        ? + 6 --> unnamed_f_x_plus_6(x)

Очевидно, что частичная оценка функции плюса, как мы видим выше, не может быть выполнена непосредственно на C++, где мы должны предоставить все аргументы, которые ожидает функция. Проще говоря, сканирование функции плюс невозможно в прямом C++. Вот где появляется структура Феникса. Эти рамки обеспечивают возможности для проведения частичной оценки функций.



Статья Basic Concepts раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-06 17:49:34/0.0038409233093262/0