Википедия

Функциональный тип

Функциональный тип (стрелочный тип, экспоненциал) в информатике — тип переменной или параметра, значением которой или которого может быть функция; либо тип аргумента или возвращаемого значения функции высшего порядка, принимающей или возвращающей функцию.

Функциональный тип зависит от типов параметров и типа результата функции. Другими словами, это тип высшего рода, или, более точно, неприменённый конструктор типов «». В теоретических моделях и языках с поддержкой каррирования, например в просто типизированном лямбда-исчислении, функциональный тип зависит ровно от двух типов: области определения и области значений . В этом случае функциональный тип, следуя математической традиции, обычно записывают как (в практических языках программирования — A -> B), или как , подразумевая, что существует ровно [англ.], отображающих на . С точки зрения соответствия Карри — Ховарда обитаемость функционального типа эквивалентна доказуемости логической импликации .

Функциональный тип можно рассматривать как частный случай зависимого произведения типов. Среди прочих свойств, такое представление несёт в себе идею полиморфной функции.

Языки программирования

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

Язык программирования Нотация Пример [англ.]
С поддержкой первоклассных функций,
параметрического полиморфизма
C++11 std::function<ρ (α1,α2,...,αn)> function<function<int(int)>(function<int(int)>, function<int(int)>)> compose;
C# Func<α1,α2,...,αn,ρ> Func<A,C> compose(Func<A,B> f, Func<B,C> g);
Go func(α1,α2,...,αn) ρ var compose func(func(int)int, func(int)int) func(int)int
Haskell α -> ρ compose :: (a -> b) -> (b -> c) -> a -> c
Objective-C/C/C++ с блоками ρ (^)(α1,α2,...,αn) int (^compose(int (^f)(int), int (^g)(int)))(int);
OCaml α -> ρ compose : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
Scala (α1,α2,...,αn) => ρ def compose[A, B, C](f: B => C, g: A => B): A => C
Standard ML α -> ρ compose : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
Без первоклассных функций,
параметрического полиморфизма
Си ρ (*)(α1,α2,...,αn) int (*compose(int (*f)(int), int (*g)(int)))(int);

Следует обратить внимание, что в примере на C# функция compose имеет тип «Func< Func<A,B>, Func<B,C>, Func<A,C> >».

Денотационная семантика

Функциональный тип в языках программирования не соответствует пространству всех теоретико-множественных функций. Если принять счётно бесконечный тип натуральных чисел в качестве области определения и тип булевых чисел в качестве области значений, то существует несчётное количество (image — мощность континуума) теоретико-множественных функций между ними. Очевидно, это множество функций заведомо шире множества функций, определимых в языках программирования, так как существует лишь счётное множество программ (где программа представляет собой конечную цепочку из символов конечного набора).

занимается поиском более подходящих моделей (называемых [англ.]), в том числе, для моделирования таких понятий языков программирования как функциональный тип. В денотационной семантике считается, что целесообразно не ограничиваться лишь вычислимыми функциями, а использовать любые непрерывные по Скотту функции на частично упорядоченных множествах, которыми возможно смоделировать также и [англ.] (а таковые возникают во всяком полном по Тьюрингу языке). Средства теории областей, используемые в денотационной семантике, достаточно выразительны, например, непрерывной по Скотту функцией моделируется «parallel or», определимый далеко не во всех языках программирования.

См. также

  • Декартово замкнутая категория
  • Экспоненциал — эквивалент в теории категорий
  • Функции первого класса

Ссылки

  • Бенджамин Пирс. 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

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Функциональный тип, Что такое Функциональный тип? Что означает Функциональный тип?

Ne sleduet putat s Tip vozvrashaemogo znacheniya Funkcionalnyj tip strelochnyj tip eksponencial v informatike tip peremennoj ili parametra znacheniem kotoroj ili kotorogo mozhet byt funkciya libo tip argumenta ili vozvrashaemogo znacheniya funkcii vysshego poryadka prinimayushej ili vozvrashayushej funkciyu Funkcionalnyj tip zavisit ot tipov parametrov i tipa rezultata funkcii Drugimi slovami eto tip vysshego roda ili bolee tochno neprimenyonnyj konstruktor tipov displaystyle cdot to cdot V teoreticheskih modelyah i yazykah s podderzhkoj karrirovaniya naprimer v prosto tipizirovannom lyambda ischislenii funkcionalnyj tip zavisit rovno ot dvuh tipov oblasti opredeleniya A displaystyle A i oblasti znachenij B displaystyle B V etom sluchae funkcionalnyj tip sleduya matematicheskoj tradicii obychno zapisyvayut kak A B displaystyle A to B v prakticheskih yazykah programmirovaniya A gt B ili kak BA displaystyle B A podrazumevaya chto sushestvuet rovno B A displaystyle B A angl otobrazhayushih A displaystyle A na B displaystyle B S tochki zreniya sootvetstviya Karri Hovarda obitaemost funkcionalnogo tipa A B displaystyle A to B ekvivalentna dokazuemosti logicheskoj implikacii A B displaystyle A Rightarrow B Funkcionalnyj tip mozhno rassmatrivat kak chastnyj sluchaj zavisimogo proizvedeniya tipov Sredi prochih svojstv takoe predstavlenie nesyot v sebe ideyu polimorfnoj funkcii Yazyki programmirovaniyaV sleduyushuyu tablicu svedyon sintaksis ispolzuemyj v razlichnyh yazykah programmirovaniya dlya funkcionalnyh tipov a takzhe sootvetstvuyushie primery signatury tipa dlya funkcii kompozicii funkcij Yazyk programmirovaniya Notaciya Primer angl S podderzhkoj pervoklassnyh funkcij parametricheskogo polimorfizma C 11 std function lt i r i i a i sub 1 sub i a i sub 2 sub i a i sub i n i sub gt function lt function lt int int gt function lt int int gt function lt int int gt gt compose C Func lt i a i sub 1 sub i a i sub 2 sub i a i sub i n i sub i r i gt Func lt A C gt compose Func lt A B gt f Func lt B C gt g Go func i a i sub 1 sub i a i sub 2 sub i a i sub i n i sub i r i var compose func func int int func int int func int intHaskell i a i gt i r i compose a gt b gt b gt c gt a gt cObjective C C C s blokami i r i i a i sub 1 sub i a i sub 2 sub i a i sub i n i sub int compose int f int int g int int OCaml i a i gt i r i compose a gt b gt b gt c gt a gt cScala i a i sub 1 sub i a i sub 2 sub i a i sub i n i sub gt i r i def compose A B C f B gt C g A gt B A gt CStandard ML i a i gt i r i compose a gt b gt b gt c gt a gt cBez pervoklassnyh funkcij parametricheskogo polimorfizma Si i r i i a i sub 1 sub i a i sub 2 sub i a i sub i n i sub int compose int f int int g int int Sleduet obratit vnimanie chto v primere na C funkciya compose imeet tip Func lt Func lt A B gt Func lt B C gt Func lt A C gt gt Denotacionnaya semantikaFunkcionalnyj tip v yazykah programmirovaniya ne sootvetstvuet prostranstvu vseh teoretiko mnozhestvennyh funkcij Esli prinyat schyotno beskonechnyj tip naturalnyh chisel v kachestve oblasti opredeleniya i tip bulevyh chisel v kachestve oblasti znachenij to sushestvuet neschyotnoe kolichestvo 2ℵ0 c displaystyle 2 aleph 0 mathfrak c moshnost kontinuuma teoretiko mnozhestvennyh funkcij mezhdu nimi Ochevidno eto mnozhestvo funkcij zavedomo shire mnozhestva funkcij opredelimyh v yazykah programmirovaniya tak kak sushestvuet lish schyotnoe mnozhestvo programm gde programma predstavlyaet soboj konechnuyu cepochku iz simvolov konechnogo nabora zanimaetsya poiskom bolee podhodyashih modelej nazyvaemyh angl v tom chisle dlya modelirovaniya takih ponyatij yazykov programmirovaniya kak funkcionalnyj tip V denotacionnoj semantike schitaetsya chto celesoobrazno ne ogranichivatsya lish vychislimymi funkciyami a ispolzovat lyubye nepreryvnye po Skottu funkcii na chastichno uporyadochennyh mnozhestvah kotorymi vozmozhno smodelirovat takzhe i angl a takovye voznikayut vo vsyakom polnom po Tyuringu yazyke Sredstva teorii oblastej ispolzuemye v denotacionnoj semantike dostatochno vyrazitelny naprimer nepreryvnoj po Skottu funkciej modeliruetsya parallel or opredelimyj daleko ne vo vseh yazykah programmirovaniya Sm takzheDekartovo zamknutaya kategoriya Eksponencial ekvivalent v teorii kategorij Funkcii pervogo klassaSsylkiBendzhamin Pirs Types and Programming Languages The MIT Press S 99 100 angl Foundations for Programming Languages The MIT Press 1996 Homotopy Type Theory Univalent Foundations of Mathematics The Univalent Foundations Program angl Institute for Advanced Study 2013 razdel 1 2Dlya uluchsheniya etoj stati po informacionnym tehnologiyam zhelatelno Prostavit snoski vnesti bolee tochnye ukazaniya na istochniki Pozhalujsta posle ispravleniya problemy isklyuchite eyo iz spiska parametrov Posle ustraneniya vseh nedostatkov etot shablon mozhet byt udalyon lyubym uchastnikom

NiNa.Az

NiNa.Az - Абсолютно бесплатная система, которая делится для вас информацией и контентом 24 часа в сутки.
Взгляните
Закрыто