Ля́мбда-чи́слення, або λ-чи́слення — формальна система, що використовується в теоретичній кібернетиці для дослідження визначення функції, застосування функції, та рекурсії. Це числення було запропоноване Алонсо Черчем та Стівеном Кліні в 1930-ті роки, як частина більшої спроби розробити базис математики на основі функцій, а не множин (задля уникнення таких перешкод, як Парадокс Рассела). Однак [en] демонструє, що лямбда-числення не здатне уникнути теоретико-множинних парадоксів. Незважаючи на це, лямбда-числення виявилось зручним інструментом в дослідженні обчислюваності функцій, та лягло в основу парадигми функціонального програмування.
Лямбда-числення можна розглядати як ідеалізовану, мінімалістичну мову програмування, у цьому сенсі лямбда-числення подібне до машини Тюрінга, іншої мінімалістичної абстракції, здатної визначати будь-який алгоритм. Відмінність між ними полягає в тому, що лямбда-числення відповідає функціональній парадигмі визначення алгоритмів, а машина Тюрінга, натомість — імперативній. Тобто, машина Тюрінга має певний «стан» — перелік символів, що можуть змінюватись із кожною наступною інструкцією. На відміну від цього, лямбда-числення уникає станів, воно має справу з функціями, котрі отримують значення параметрів та повертають результати обчислень (можливо, інші функції), але не спричиняють до зміни вхідних даних (сталість).
Ядро λ-числення ґрунтується трохи більше ніж на визначені змінних, області видимості змінних та впорядкованому заміщенні змінних виразами. λ-числення є замкненою мовою, тобто семантика мови може бути визначена на основі еквівалентності виразів (або термів) самої мови.
Визначення лямбда-виразів
Множину λ-виразів можна визначити індуктивно таким чином:
- будь-яка змінна — це λ-вираз;
- -абстракція — це λ-вираз, якщо x — це змінна, а — λ-вираз;
- аплікація — це λ-вираз, якщо та — λ-вирази.
Інтуїтивно, абстракції відповідають функціям, а аплікації їх застосуванню. Особливістю лямбда-числення є те, що аргументи «функцій», визначених таким чином, — це теж функції. Наприклад, — це λ-вираз, що відповідає функції ідентичності, а — це аплікація цієї функції до , у випадку коли — це теж λ-вираз.
На цій множині ми визначаємо відношення , що називається бета-редукція:
- ,
де означає, що вираз підставляється всюди замість змінної x у виразі .
Тоді, у попередньому прикладі матимемо: . Як і очікувано, застосування функції ідентичності до певного виразу повертає цей вираз.
Ремарка: Як і у випадку логіки першого порядку, важливо слідкувати за вільними змінними, коли йдеться про абстракцію та підстановки.
λ-вирази не такі складні, якими здаються на перший погляд. Просто треба звикнути до префіксної форми запису. Більше немає ні інфіксних (), ні постфіксних () операцій. Крім того, аргументи функцій просто записуються в список після функції, розділені пропуском. Тому всюди, де математики пишуть , в лямбда-численні пишуть . Так само замість пишуть , а замість — .
Хоча дужки таки не пропадають. Вони використовуються для групування. Наприклад, математичний вираз в лямбда-численні записується як .
Якщо вираз містить змінну, то він може описувати функцію, як залежність свого значення від значення змінної, наприклад . Лямбда-числення має спеціальний синтаксис, який не зобов'язує задавати ім'я функції (як для ). Для запису функції переводимо вираз в правій частині в префіксну форму (), і дописуємо спереду «». Отримуємо . Грецька літера має роль, подібну до тої що має слово «function» в деяких мовах програмування. Вона вказує читачу що змінна після неї — не частина виразу, а формальний параметр функції, що задається. Крапка після параметра позначає початок тіла функції.
Мова | Приклад |
---|---|
Лямбда-числення | |
Pascal | function f(x: integer): integer begin f:= 3*x end; |
Lisp | (lambda (x) (* 3 x)) |
Python | lambda x: x*3 |
[](int x) { return x * 3 } | |
Swift | { return $0 * 3 } |
Щоб застосувати створену функцію до якихось аргументів, її просто підставляють в вираз, наприклад так: . Дужки навколо функції потрібні, щоб чітко знати де вона закінчується. Якби ми написали , то це могло б сприйматись як функція, що повертає , якщо * — тернарний оператор, або як синтаксична помилка, якщо * — завжди бінарне.
Для зручності ми можемо позначити нашу функцію якоюсь буквою:
і потім просто писати .
Залишилось розглянути ще один цікавий випадок:
якщо передати , то вона поверне нашу стару функцію . Тобто працює як , якій ми можемо передати наприклад 4, записавши це як . Або, ми можемо розглядати її як функцію від двох аргументів.
Можна записати це в скороченій формі, без дужок:
Чи ще коротше:
Наступний розділ цієї статті пояснює те ж саме, але трохи в іншому стилі.
Нотація λ-числення
Функція n змінних в λ-численні позначається так:
- .
Символ в лівій частині цього рівняння задає назву функції, (або ідентифікатор), за яким можна посилатись на цю функцію в інших виразах. Вираз у правій частині рівняння визначає абстракцію змінних від виразу , котрий називається тілом абстракції. Конструкція є абстрактором появи вільних змінних в тілі функції .
Застосування функції (або абстракції) з назвою до виразу з аргументами позначається:
- ,
Де не обов'язково має дорівнювати .
Особливим випадком є застосування абстракції до абстрагованих змінних, що повертає тіло абстракції:
- .
Задля спрощення в λ-численні розглядаються функції від однієї змінної. Як було показано у винаході Шейнфінкеля та Каррі, n-арні абстракції можна представляти у вигляді n-кратного вкладення унарних абстракцій, тобто:
- .
Використовуючи цю нотацію, застосування n-арної абстракції до r аргументів, наведене вище, матиме такий вигляд:
- .
Такий підхід скорочує побудову виразів λ-числення до наступних синтаксичних правил:
- .
Тобто, λ-вираз це: або змінна, що позначається v, константа c, застосування λ-виразу до λ-виразу , або абстракція змінної v від λ-виразу відповідно.
λ-числення називається чистим, якщо множина констант порожня. В іншому випадку числення називається аплікативним.
Див. також
Примітки
- Henk Barendregt 1997
- Kluge 2005, сторінка 51.
- M.H. Sorensen and P. Urzyczyn «Lectures on the Curry-Howard Isomorphism» (2006)
Література
- Achim Jung, A Short Introduction to the Lambda Calculus [ 23 квітня 2021 у Wayback Machine.]-(PDF)
- Henk Barendregt, The Bulletin of Symbolic Logic, Volume 3, Number 2, June 1997. The Impact of the Lambda Calculus in Logic and Computer Science
- W. Kluge (2005). Abstract Computing Machines, The Lambda Calculus perspective. Springer Verlag. ISBN .
- Raúl Rojas, A Tutorial Introduction to the Lambda Calculus [ 1 листопада 2013 у Wayback Machine.](англ.) -(PDF)
- Wolfengagen, V.E. Combinatory logic in programming. Computations with objects through examples and exercises. — 2-nd ed. — M.: «Center JurInfoR» Ltd., 2003. — x+337 с. .
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Це незавершена стаття з математики. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Lya mbda chi slennya abo l chi slennya formalna sistema sho vikoristovuyetsya v teoretichnij kibernetici dlya doslidzhennya viznachennya funkciyi zastosuvannya funkciyi ta rekursiyi Ce chislennya bulo zaproponovane Alonso Cherchem ta Stivenom Klini v 1930 ti roki yak chastina bilshoyi sprobi rozrobiti bazis matematiki na osnovi funkcij a ne mnozhin zadlya uniknennya takih pereshkod yak Paradoks Rassela Odnak en demonstruye sho lyambda chislennya ne zdatne uniknuti teoretiko mnozhinnih paradoksiv Nezvazhayuchi na ce lyambda chislennya viyavilos zruchnim instrumentom v doslidzhenni obchislyuvanosti funkcij ta lyaglo v osnovu paradigmi funkcionalnogo programuvannya Lyambda chislennya mozhna rozglyadati yak idealizovanu minimalistichnu movu programuvannya u comu sensi lyambda chislennya podibne do mashini Tyuringa inshoyi minimalistichnoyi abstrakciyi zdatnoyi viznachati bud yakij algoritm Vidminnist mizh nimi polyagaye v tomu sho lyambda chislennya vidpovidaye funkcionalnij paradigmi viznachennya algoritmiv a mashina Tyuringa natomist imperativnij Tobto mashina Tyuringa maye pevnij stan perelik simvoliv sho mozhut zminyuvatis iz kozhnoyu nastupnoyu instrukciyeyu Na vidminu vid cogo lyambda chislennya unikaye staniv vono maye spravu z funkciyami kotri otrimuyut znachennya parametriv ta povertayut rezultati obchislen mozhlivo inshi funkciyi ale ne sprichinyayut do zmini vhidnih danih stalist Yadro l chislennya gruntuyetsya trohi bilshe nizh na viznacheni zminnih oblasti vidimosti zminnih ta vporyadkovanomu zamishenni zminnih virazami l chislennya ye zamknenoyu movoyu tobto semantika movi mozhe buti viznachena na osnovi ekvivalentnosti viraziv abo termiv samoyi movi Viznachennya lyambda virazivMnozhinu l viraziv mozhna viznachiti induktivno takim chinom bud yaka zminna ce l viraz l displaystyle lambda abstrakciya l x M displaystyle lambda x M ce l viraz yaksho x ce zminna a M displaystyle M l viraz aplikaciya M N displaystyle MN ce l viraz yaksho M displaystyle M ta N displaystyle N l virazi Intuyitivno abstrakciyi vidpovidayut funkciyam a aplikaciyi yih zastosuvannyu Osoblivistyu lyambda chislennya ye te sho argumenti funkcij viznachenih takim chinom ce tezh funkciyi Napriklad l x x displaystyle lambda x x ce l viraz sho vidpovidaye funkciyi identichnosti a l x x M displaystyle lambda x xM ce aplikaciya ciyeyi funkciyi do M displaystyle M u vipadku koli M displaystyle M ce tezh l viraz Na cij mnozhini mi viznachayemo vidnoshennya b displaystyle rightarrow beta sho nazivayetsya beta redukciya l x M N b M x N displaystyle lambda xM N rightarrow beta M x N de M x N displaystyle M x N oznachaye sho viraz N displaystyle N pidstavlyayetsya vsyudi zamist zminnoyi x u virazi M displaystyle M Todi u poperednomu prikladi matimemo l x x M b x x M M displaystyle lambda x x M rightarrow beta x x M M Yak i ochikuvano zastosuvannya funkciyi identichnosti do pevnogo virazu povertaye cej viraz Remarka Yak i u vipadku logiki pershogo poryadku vazhlivo slidkuvati za vilnimi zminnimi koli jdetsya pro abstrakciyu ta pidstanovki l virazi ne taki skladni yakimi zdayutsya na pershij poglyad Prosto treba zviknuti do prefiksnoyi formi zapisu Bilshe nemaye ni infiksnih displaystyle ni postfiksnih x 2 displaystyle x 2 operacij Krim togo argumenti funkcij prosto zapisuyutsya v spisok pislya funkciyi rozdileni propuskom Tomu vsyudi de matematiki pishut sin x displaystyle sin x v lyambda chislenni pishut sin x displaystyle sin x Tak samo zamist x y displaystyle x y pishut x y displaystyle x y a zamist x 2 displaystyle x 2 x x displaystyle x x Hocha duzhki taki ne propadayut Voni vikoristovuyutsya dlya grupuvannya Napriklad matematichnij viraz sin x 4 displaystyle sin x 4 v lyambda chislenni zapisuyetsya yak sin x 4 displaystyle sin x 4 Yaksho viraz mistit zminnu to vin mozhe opisuvati funkciyu yak zalezhnist svogo znachennya vid znachennya zminnoyi napriklad f x 3 x displaystyle f x 3x Lyambda chislennya maye specialnij sintaksis yakij ne zobov yazuye zadavati im ya funkciyi yak dlya f displaystyle f Dlya zapisu funkciyi perevodimo viraz v pravij chastini v prefiksnu formu 3 x displaystyle 3 x i dopisuyemo speredu l x displaystyle lambda x Otrimuyemo l x 3 x displaystyle lambda x 3 x Grecka litera l displaystyle lambda maye rol podibnu do toyi sho maye slovo function v deyakih movah programuvannya Vona vkazuye chitachu sho zminna pislya neyi ne chastina virazu a formalnij parametr funkciyi sho zadayetsya Krapka pislya parametra poznachaye pochatok tila funkciyi Mova Priklad Lyambda chislennya l x 3 x displaystyle lambda x 3 x Pascal function f x integer integer begin f 3 x end ne zovsim lyambda viraz oskilki ye nazva funkciyi ale sut ta zh Lisp lambda x 3 x Python lambda x x 3 C 11 int x return x 3 Swift return 0 3 Shob zastosuvati stvorenu funkciyu do yakihos argumentiv yiyi prosto pidstavlyayut v viraz napriklad tak l x 3 x 4 displaystyle lambda x 3 x 4 Duzhki navkolo funkciyi potribni shob chitko znati de vona zakinchuyetsya Yakbi mi napisali l x 3 x 4 displaystyle lambda x 3 x4 to ce moglo b sprijmatis yak funkciya sho povertaye 3 x 4 12 x displaystyle 3 x 4 12x yaksho ternarnij operator abo yak sintaksichna pomilka yaksho zavzhdi binarne Dlya zruchnosti mi mozhemo poznachiti nashu funkciyu yakoyus bukvoyu F l x 3 x displaystyle F equiv lambda x 3 x i potim prosto pisati F 4 displaystyle F4 Zalishilos rozglyanuti she odin cikavij vipadok N l y l x y x displaystyle N equiv lambda y lambda x y x yaksho peredati N 3 displaystyle N 3 to vona poverne nashu staru funkciyu l x 3 x displaystyle lambda x 3 x Tobto N 3 displaystyle N3 pracyuye yak F displaystyle F yakij mi mozhemo peredati napriklad 4 zapisavshi ce yak N 3 4 displaystyle N 3 4 Abo mi mozhemo rozglyadati yiyi yak funkciyu vid dvoh argumentiv Mozhna zapisati ce v skorochenij formi bez duzhok l y l x x y displaystyle lambda y lambda x x y Chi she korotshe l y x x y displaystyle lambda y x x y Nastupnij rozdil ciyeyi statti poyasnyuye te zh same ale trohi v inshomu stili Notaciya l chislennyaFunkciya n zminnih v 1 v n displaystyle v 1 dots v n v l chislenni poznachayetsya tak f l v 1 v n e 0 displaystyle f lambda v 1 ldots v n e 0 Simvol f displaystyle f v livij chastini cogo rivnyannya zadaye nazvu funkciyi abo identifikator za yakim mozhna posilatis na cyu funkciyu v inshih virazah Viraz u pravij chastini rivnyannya viznachaye abstrakciyu zminnih v 1 v n displaystyle v 1 ldots v n vid virazu e 0 displaystyle e 0 kotrij nazivayetsya tilom abstrakciyi Konstrukciya l v 1 v n displaystyle lambda v 1 ldots v n ye abstraktorom poyavi vilnih zminnih v 1 v n displaystyle v 1 dots v n v tili funkciyi e 0 displaystyle e 0 Zastosuvannya funkciyi abo abstrakciyi z nazvoyu f displaystyle f do virazu z r displaystyle r argumentami e 1 e r displaystyle e 1 ldots e r poznachayetsya f e 1 e r l v 1 v n e 0 e 1 e r displaystyle fe 1 ldots e r lambda v 1 ldots v n e 0 e 1 ldots e r De r displaystyle r ne obov yazkovo maye dorivnyuvati n displaystyle n Osoblivim vipadkom ye zastosuvannya abstrakciyi do abstragovanih zminnih sho povertaye tilo abstrakciyi l v 1 v n e 0 v 1 v n e 0 displaystyle lambda v 1 ldots v n e 0 v 1 ldots v n e 0 Zadlya sproshennya v l chislenni rozglyadayutsya funkciyi vid odniyeyi zminnoyi Yak bulo pokazano u vinahodi Shejnfinkelya ta Karri n arni abstrakciyi mozhna predstavlyati u viglyadi n kratnogo vkladennya unarnih abstrakcij tobto f l v 1 v n e 0 l v 1 l v 2 l v n e 0 displaystyle f lambda v 1 ldots v n e 0 equiv lambda v 1 lambda v 2 ldots lambda v n e 0 Vikoristovuyuchi cyu notaciyu zastosuvannya n arnoyi abstrakciyi do r argumentiv navedene vishe matime takij viglyad f e 1 e r f e 1 e 2 e r displaystyle f e 1 ldots e r dots f e 1 e 2 e r Takij pidhid skorochuye pobudovu viraziv l chislennya do nastupnih sintaksichnih pravil e s v c e 0 e 1 l v e 0 displaystyle e s v c e 0 e 1 lambda v e 0 Tobto l viraz ce abo zminna sho poznachayetsya v konstanta c zastosuvannya l virazu e 0 displaystyle e 0 do l virazu e 1 displaystyle e 1 abo abstrakciya zminnoyi v vid l virazu e 0 displaystyle e 0 vidpovidno l chislennya nazivayetsya chistim yaksho mnozhina konstant porozhnya V inshomu vipadku chislennya nazivayetsya aplikativnim Div takozhTipizovane lyambda chislennya Sistema F Funkcijne programuvannya Pi chislennya Mashina Tyuringa Pidstanovka Lyambda kubPrimitkiHenk Barendregt 1997 Kluge 2005 storinka 51 M H Sorensen and P Urzyczyn Lectures on the Curry Howard Isomorphism 2006 LiteraturaAchim Jung A Short Introduction to the Lambda Calculus 23 kvitnya 2021 u Wayback Machine PDF Henk Barendregt The Bulletin of Symbolic Logic Volume 3 Number 2 June 1997 The Impact of the Lambda Calculus in Logic and Computer Science W Kluge 2005 Abstract Computing Machines The Lambda Calculus perspective Springer Verlag ISBN 3 540 21146 2 Raul Rojas A Tutorial Introduction to the Lambda Calculus 1 listopada 2013 u Wayback Machine angl PDF Wolfengagen V E Combinatory logic in programming Computations with objects through examples and exercises 2 nd ed M Center JurInfoR Ltd 2003 x 337 s ISBN 5 89158 101 9 Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Ce nezavershena stattya z matematiki Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi