Лучшие вопросы
Таймлайн
Чат
Перспективы
Функциональный тип
Из Википедии, свободной энциклопедии
Remove ads
Функциональный тип (стрелочный тип, экспоненциал) в информатике — тип переменной или параметра, значением которой или которого может быть функция; либо тип аргумента или возвращаемого значения функции высшего порядка, принимающей или возвращающей функцию.
Функциональный тип зависит от типов параметров и типа результата функции. Другими словами, это тип высшего рода, или, более точно, неприменённый конструктор типов «». В теоретических моделях и языках с поддержкой каррирования, например в просто типизированном лямбда-исчислении, функциональный тип зависит ровно от двух типов: области определения и области значений . В этом случае функциональный тип, следуя математической традиции, обычно записывают как (в практических языках программирования — A -> B
), или как , подразумевая, что существует ровно теоретико-множественных функций[англ.], отображающих на . С точки зрения соответствия Карри — Ховарда обитаемость функционального типа эквивалентна доказуемости логической импликации .
Функциональный тип можно рассматривать как частный случай зависимого произведения типов. Среди прочих свойств, такое представление несёт в себе идею полиморфной функции.
Remove ads
Языки программирования
Суммиров вкратце
Перспектива
В следующую таблицу сведён синтаксис, используемый в различных языках программирования для функциональных типов, а также соответствующие примеры сигнатуры типа для функции композиции функций.
Следует обратить внимание, что в примере на C# функция compose
имеет тип «Func< Func<A,B>, Func<B,C>, Func<A,C> >
».
Remove ads
Денотационная семантика
Суммиров вкратце
Перспектива
Функциональный тип в языках программирования не соответствует пространству всех теоретико-множественных функций. Если принять счётно бесконечный тип натуральных чисел в качестве области определения и тип булевых чисел в качестве области значений, то существует несчётное количество ( — мощность континуума) теоретико-множественных функций между ними. Очевидно, это множество функций заведомо шире множества функций, определимых в языках программирования, так как существует лишь счётное множество программ (где программа представляет собой конечную цепочку из символов конечного набора).
Денотационная семантика занимается поиском более подходящих моделей (называемых областями[англ.]), в том числе, для моделирования таких понятий языков программирования как функциональный тип. В денотационной семантике считается, что целесообразно не ограничиваться лишь вычислимыми функциями, а использовать любые непрерывные по Скотту функции на частично упорядоченных множествах, которыми возможно смоделировать также и незавершимые вычисления[англ.] (а таковые возникают во всяком полном по Тьюрингу языке). Средства теории областей, используемые в денотационной семантике, достаточно выразительны, например, непрерывной по Скотту функцией моделируется «parallel or
», определимый далеко не во всех языках программирования.
Remove ads
См. также
- Декартово замкнутая категория
- Экспоненциал — эквивалент в теории категорий
- Функции первого класса
Ссылки
- Бенджамин Пирс. Types and Programming Languages. — The MIT Press. — С. 99-100.
- Джон Митчел[англ.]. Foundations for Programming Languages. — The MIT Press, 1996.
- Homotopy Type Theory: Univalent Foundations of Mathematics, The Univalent Foundations Program (англ.). Institute for Advanced Study (2013). — раздел 1.2
![]() | Для улучшения этой статьи по информационным технологиям желательно: |
Remove ads
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads