Лямбда обозначение: λ — Греческая строчная буква лямбда: U+03BB lambda

Содержание

Лямбда — Википедия (с комментариями)

Материал из Википедии — свободной энциклопедии

Символы со сходным начертанием: Ʌ ·  ·  · 𐤂

Λ, λ (название: ля́мбда, греч. λάμδα) — 11-я буква греческого алфавита. В системе греческой алфавитной записи чисел имеет числовое значение 30. Происходит от финикийской буквы  — ламед. От буквы «лямбда» произошли латинская буква L и кириллическая Л, а также их производные.[1]

Использование

Прописная Λ

Строчная λ

В физике
В других науках

Лямбда в культуре

К:Википедия:Статьи без источников (тип: не указан)

  • Буквой «лямбда», как правило красного цвета, украшали свои щиты спартанские воины, так как лямбда – это первая буква в названии древнегреческой области Лаконики, где они жили.
  • В вымышленной вселенной «Звёздных Войн» существует космический корабль, известный как «корабль класса Лямбда», похожий на букву «λ», если смотреть вдоль оси симметрии.
  • Лямбда является символом серии популярных компьютерных игр Half-Life и часто используется в названиях игр этой серии, где заменяет букву a в словосочетании «Half-Life» («H λ L F — L I F E»)[2][3]. В самой игре буква «λ» является логотипом одноимённого комплекса — «Лямбда», части исследовательского центра Чёрная Меза, в котором изучаются технологии телепортации; позднее, в Half-Life 2, лямбда становится символом сопротивления людей против инопланетного Альянса. Этот символ присутствует и на костюме главного героя — Гордона Фримена. Также напоминает руку, держащую монтировку — ещё один символ данных игр[4].
  • В песне Михаила Щербакова «Австралия» лирический герой мечтал дать имя «Лямбда» своему так и не заведённому жирафу, муравьеду или кенгуру.
  • Лямбда является одним из символов ЛГБТ-движения.
  • В некоторых шрифтах заглавная латинская A рисуется без горизонтальной палочки, то есть как Λ (заглавная лямбда) — например, на старом логотипе НАСА или современном логотипе компании Samsung, а также на эмблемах Renault Megane (в слове «Megane») и Kia.
  • Музыкальный дуэт Axwell Λ Ingrosso использует лямбду как один из символов в их сценическом имени.

Напишите отзыв о статье «Лямбда»

Примечания

Отрывок, характеризующий Лямбда

Лопухин и старый генерал изредка принимали участие в разговоре. Князь Николай Андреич слушал, как верховный судья слушает доклад, который делают ему, только изредка молчанием или коротким словцом заявляя, что он принимает к сведению то, что ему докладывают. Тон разговора был такой, что понятно было, никто не одобрял того, что делалось в политическом мире. Рассказывали о событиях, очевидно подтверждающих то, что всё шло хуже и хуже; но во всяком рассказе и суждении было поразительно то, как рассказчик останавливался или бывал останавливаем всякий раз на той границе, где суждение могло относиться к лицу государя императора.
За обедом разговор зашел о последней политической новости, о захвате Наполеоном владений герцога Ольденбургского и о русской враждебной Наполеону ноте, посланной ко всем европейским дворам.
– Бонапарт поступает с Европой как пират на завоеванном корабле, – сказал граф Ростопчин, повторяя уже несколько раз говоренную им фразу. – Удивляешься только долготерпению или ослеплению государей. Теперь дело доходит до папы, и Бонапарт уже не стесняясь хочет низвергнуть главу католической религии, и все молчат! Один наш государь протестовал против захвата владений герцога Ольденбургского. И то… – Граф Ростопчин замолчал, чувствуя, что он стоял на том рубеже, где уже нельзя осуждать.
– Предложили другие владения заместо Ольденбургского герцогства, – сказал князь Николай Андреич. – Точно я мужиков из Лысых Гор переселял в Богучарово и в рязанские, так и он герцогов.
– Le duc d’Oldenbourg supporte son malheur avec une force de caractere et une resignation admirable, [Герцог Ольденбургский переносит свое несчастие с замечательной силой воли и покорностью судьбе,] – сказал Борис, почтительно вступая в разговор. Он сказал это потому, что проездом из Петербурга имел честь представляться герцогу. Князь Николай Андреич посмотрел на молодого человека так, как будто он хотел бы ему сказать кое что на это, но раздумал, считая его слишком для того молодым.
– Я читал наш протест об Ольденбургском деле и удивлялся плохой редакции этой ноты, – сказал граф Ростопчин, небрежным тоном человека, судящего о деле ему хорошо знакомом.
Пьер с наивным удивлением посмотрел на Ростопчина, не понимая, почему его беспокоила плохая редакция ноты.
– Разве не всё равно, как написана нота, граф? – сказал он, – ежели содержание ее сильно.
– Mon cher, avec nos 500 mille hommes de troupes, il serait facile d’avoir un beau style, [Мой милый, с нашими 500 ми тысячами войска легко, кажется, выражаться хорошим слогом,] – сказал граф Ростопчин. Пьер понял, почему графа Ростопчина беспокоила pедакция ноты.
– Кажется, писак довольно развелось, – сказал старый князь: – там в Петербурге всё пишут, не только ноты, – новые законы всё пишут. Мой Андрюша там для России целый волюм законов написал. Нынче всё пишут! – И он неестественно засмеялся.
Разговор замолк на минуту; старый генерал прокашливаньем обратил на себя внимание.
– Изволили слышать о последнем событии на смотру в Петербурге? как себя новый французский посланник показал!
– Что? Да, я слышал что то; он что то неловко сказал при Его Величестве.
– Его Величество обратил его внимание на гренадерскую дивизию и церемониальный марш, – продолжал генерал, – и будто посланник никакого внимания не обратил и будто позволил себе сказать, что мы у себя во Франции на такие пустяки не обращаем внимания. Государь ничего не изволил сказать. На следующем смотру, говорят, государь ни разу не изволил обратиться к нему.
Все замолчали: на этот факт, относившийся лично до государя, нельзя было заявлять никакого суждения.
– Дерзки! – сказал князь. – Знаете Метивье? Я нынче выгнал его от себя. Он здесь был, пустили ко мне, как я ни просил никого не пускать, – сказал князь, сердито взглянув на дочь. И он рассказал весь свой разговор с французским доктором и причины, почему он убедился, что Метивье шпион. Хотя причины эти были очень недостаточны и не ясны, никто не возражал.
За жарким подали шампанское. Гости встали с своих мест, поздравляя старого князя. Княжна Марья тоже подошла к нему.

Слово ЛЯМБДА — Что такое ЛЯМБДА?

Слово состоит из 6 букв:

первая л,

вторая я,

третья м,

четвёртая б,

пятая д,

последняя а,

Слово лямбда английскими буквами(транслитом) — lyambda

Значения слова лямбда. Что такое лямбда?

Лямбда-куб

Ля́мбда-куб (λ-куб) задает единообразное описание восьми различных систем типизированного лямбда-исчисления с явным приписыванием типов (систем, типизированных по Чёрчу).

ru.wikipedia.org

Лямбда Змеи

Лямбда Змеи, (англ. Lambda Serpentis) — звезда, которая находится в созвездии Змея на расстоянии около 38,3 световых лет от нас. λ Змеи относится к тому же классу звёзд, что и наше Солнце — жёлтым карликам главной последовательности.

ru.wikipedia.org

Лямбда-зонд

Лямбда-зонд (λ-зонд) — датчик кислорода в выпускном коллекторе двигателя. Позволяет оценивать количество оставшегося свободного кислорода в выхлопных газах.

ru.wikipedia.org

Лямбда-зонд — датчик концентрации кислорода применяемый в системе впрыска с обратной связью и устанавливается на приемной трубе глушителя. Название датчика происходит от греческой буквы λ (лямбда)…

Энциклопедический фонд России

Лямбда Тельца

Лямбда Тельца принадлежит к классу затменных двойных звёзд типа Алголя, с видимой яркостью третьей звёздной величины (3.41m) и находится на расстоянии 370 световых лет от нас.

ru.wikipedia.org

Лямбда-барион

Ля́мбда-барио́ны (Λ-барионы, Λ-частицы) — группа элементарных частиц, представляющих собой барион с изотопическим спином 0, содержащих ровно два кварка первого поколения (u- и d-кварк).

ru.wikipedia.org

Лямбда Эридана

Лямбда Эридана (Lam Eri/λ Eridani/λ Eri) — звезда четвертой величины (4,27m) в созвездии Эридана. По яркости она сравнима с многими другими звездами довольно тусклого созвездия.

ru.wikipedia.org

Лямбда Волопаса

Лямбда Волопаса (λ Boo / λ Boötis) — белая звезда главной последовательности спектрального класса A0, находящаяся на расстоянии 97 световых лет от Земли в созвездии Волопаса.

ru.wikipedia.org

Лямбда-выражения

Лямбда-выражение (в программировании) — это специальный синтаксис для объявления анонимных функторов по месту их использования. Используя лямбда-выражения, можно объявлять функции в любом месте кода.

ru.wikipedia.org

Фаг лямбда

Фаг λ (фаг лямбда) — умеренный бактериофаг, который заражает Escherichia coli. Как только фаг попадает внутрь клетки хозяина, он может интегрировать себя в его ДНК. В этом состоянии λ называют профагом, он остается в геноме хозяина…

ru.wikipedia.org

Фаг лямбда (lambda phage) Фаг лямбда (lambda phage) — Бактериофаг с двухцепочечной геномной ДНК, размножающийся в клетках E.coli; в зависимости от характера взаимодействия вируса и клетки-хозяина развитие фага лямбда может происходить по литическому…

www.xumuk.ru

Фаг лямбда — Инфицирующий E.coli бактериофаг, обычно используется как клонирующий вектор. См. участок ингеграции-эксцизии.

Заид А. Словарь терминов по биотехнологии

Русский язык

Ля́мбд/а.

Морфемно-орфографический словарь. — 2002


  1. ляллеманция
  2. лялька
  3. ляля
  4. лямбда
  5. лямблиоз
  6. лямблия
  7. лямзить

история и теория / Хабр

Идею, короткий план и ссылки на основные источники для этой статьи мне подал хабраюзер z6Dabrata, за что ему огромнейшее спасибо.

UPD: в текст внесены некоторые изменения с целью сделать его более понятным. Смысловая составляющая осталась прежней.

Вступление

Возможно, у этой системы найдутся приложения не только

в роли логического исчисления. (Алонзо Чёрч, 1932)

Вообще говоря, лямбда-исчисление не относится к предметам, которые «должен знать каждый уважающий себя программист». Это такая теоретическая штука, изучение которой необходимо, когда вы собираетесь заняться исследованием систем типов или хотите создать свой функциональный язык программирования. Тем не менее, если у вас есть желание разобраться в том, что лежит в основе Haskell, ML и им подобных, «сдвинуть точку сборки» на написание кода или просто расширить свой кругозор, то прошу под кат.

Начнём мы с традиционного (но краткого) экскурса в историю. В 30-х годах прошлого века перед математиками встала так называемая проблема разрешения (Entscheidungsproblem), сформулированная Давидом Гильбертом. Суть её в том, что вот есть у нас некий формальный язык, на котором можно написать какое-либо утверждение. Существует ли алгоритм, за конечное число шагов определяющий его истинность или ложность? Ответ был найден двумя великими учёными того времени Алонзо Чёрчем и Аланом Тьюрингом. Они показали (первый — с помощью изобретённого им λ-исчисления, а второй — теории машины Тьюринга), что для арифметики такого алгоритма не существует в принципе, т.е. Entscheidungsproblem в общем случае неразрешима.

Так лямбда-исчисление впервые громко заявило о себе, но ещё пару десятков лет продолжало быть достоянием математической логики. Пока в середине 60-х Питер Ландин не отметил, что сложный язык программирования проще изучать, сформулировав его ядро в виде небольшого базового исчисления, выражающего самые существенные механизмы языка и дополненного набором удобных производных форм, поведение которых можно выразить путем перевода на язык базового исчисления. В качестве такой основы Ландин использовал лямбда-исчисление Чёрча. И всё заверте…

λ-исчисление: основные понятия

Синтаксис

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

Мы с вами рассмотрим его наиболее простую форму: чистое нетипизированное лямбда-исчисление, и вот что конкретно будет в нашем распоряжении.

Термы:




переменная:x
лямбда-абстракция (анонимная функция):λx.t, где x — аргумент функции, t — её тело.
применение функции (аппликация):f x, где f — функция, x — подставляемое в неё значение аргумента

Соглашения о приоритете операций:

  • Применение функции левоассоциативно. Т.е. s t u — это тоже самое, что (s t) u
  • Аппликация (применение или вызов функции по отношению к заданному значению) забирает себе всё, до чего дотянется. Т.е. λx. λy. x y x означает то же самое, что λx. (λy. ((x y) x))
  • Скобки явно указывают группировку действий.

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






f = λx.λy.t Функция с двумя аргументами x и y и телом t
f v wПодставляем в f значения v и w
(f v) wЭта запись аналогична предыдущей, но скобки явно указывают на последовательность подстановки
((λy.[x → v]t) w)Подставили v вместо x. [x → v]t означает «тело t, в котором все вхождения x заменены на v»
[y → w][x → v]tПодставили w вместо y. Преобразование закончено.

И напоследок несколько слов об области видимости. Переменная x называется связанной, если она находится в теле t λ-абстракции λx.t. Если же x не связана какой-либо вышележащей абстракцией, то её называют свободной. Например, вхождения x в x y и λy.x y свободны, а вхождения x в λx.x и λz.λx.λy.x(y z) связаны. В (λx.x)x первое вхождение x связано, а второе свободно. Если все переменные в терме связаны, то его называют замкнутым, или комбинатором. Мы с вами будем использовать следующий простейший комбинатор (функцию тождества): id = λx.x. Она не выполняет никаких действий, а просто возвращает без изменений свой аргумент.

Процесс вычисления

Рассмотрим следующий терм-применение:

(λx.t) y

Его левая часть — (λx.t) — это функция с одним аргументом x и телом t. Каждый шаг вычисления будет заключаться в замене всех вхождений переменной x внутри t на y. Терм-применение такого вида носит имя редекса (от reducible expression, redex — «сокращаемое выражение»), а операция переписывания редекса в соответствии с указанным правилом называется бета-редукцией.

Существует несколько стратегий выбора редекса для очередного шага вычисления. Рассматривать их мы будем на примере следующего терма:

(λx.x) ((λx.x) (λz. (λx.x) z)),

который для простоты можно переписать как

id (id (λz. id z))

(напомним, что id — это функция тождества вида λx.x)

В этом терме содержится три редекса:

  1. Полная β-редукция. В этом случае каждый раз редекс внутри вычисляемого терма выбирается произвольным образом. Т.е. наш пример может быть вычислен от внутреннего редекса к внешнему:
  2. Нормальный порядок вычислений. Первым всегда сокращается самый левый, самый внешний редекс.
  3. Вызов по имени. Порядок вычислений в этой стратегии аналогичен предыдущей, но к нему добавляется запрет на проведение сокращений внутри абстракции. Т.е. в нашем примере мы останавливаемся на предпоследнем шаге:


    Оптимизированная версия такой стратегии (вызов по необходимости) используется Haskell. Это так называемые «ленивые» вычисления.

  4. Вызов по значению. Здесь сокращение начинается с самого левого (внешнего) редекса, у которого в правой части стоит значение — замкнутый терм, который нельзя вычислить далее.


    Для чистого лямбда-исчисления таким термом будет λ-абстракция (функция), а в более богатых исчислениях это могут быть константы, строки, списки и т.п. Данная стратегия используется в большинстве языков программирования, когда сначала вычисляются все аргументы, а затем все вместе подставляются в функцию.

Если в терме больше нет редексов, то говорят, что он вычислен, или находится в нормальной форме. Не каждый терм имеет нормальную форму, например (λx.xx)(λx.xx) на каждом шаге вычисления будет порождать самоё себя (здесь первая скобка — анонимная функция, вторая — подставляемое в неё на место x значение).

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

(λx.λy. x) z ((λx.x x)(λx.x x))

Этот терм имеет нормальную форму z несмотря на то, что его второй аргумент такой формой не обладает. На её-то вычислении и зависнет стратегия вызова по значению, в то время как стратегия вызова по имени начнёт с самого внешнего терма и там определит, что второй аргумент не нужен в принципе. Вывод: если у редекса есть нормальная форма, то «ленивая» стратегия её обязательно найдёт.

Ещё одна тонкость связана с именованием переменных. Например, терм (λx.λy.x)y после подстановки вычислится в λy.y. Т.е. из-за совпадения имён переменных мы получим функцию тождества там, где её изначально не предполагалось. Действительно, назови мы локальную переменную не y, а z — первоначальный терм имел бы вид(λx.λz.x)y и после редукции выглядел бы как λz.y. Для исключения неоднозначностей такого рода надо чётко отслеживать, чтобы все свободные переменные из начального терма после подстановки оставались свободными. С этой целью используют α-конверсию — переименование переменной в абстракции с целью исключения конфликтов имён.

Так же бывает, что у нас есть абстракция λx.t x, причём x свободных вхождений в тело t не имеет. В этом случае данное выражение будет эквивалентно просто t. Такое преобразование называется η-конверсией.

На этом закончим вводную в лямбда-исчисление. В следующей статье мы займёмся тем, ради чего всё и затевалось: программированием на λ-исчислении.

Список источников

  1. «What is Lambda Calculus and should you care?», Erkki Lindpere
  2. «Types and Programming Languages», Benjamin Pierce
  3. Вики-конспект «Лямбда-исчисление»
  4. «Учебник по Haskell», Антон Холомьёв
  5. Лекции по функциональному программированию

лямбда — Викисловарь

Disambig.svg См. также ламбда.
Wikipedia-logo.png В Википедии есть страница «лямбда».

Содержание

  • 1 Русский
    • 1.1 Морфологические и синтаксические свойства
    • 1.2 Произношение
    • 1.3 Семантические свойства
      • 1.3.1 Значение
      • 1.3.2 Синонимы
      • 1.3.3 Антонимы
      • 1.3.4 Гиперонимы
      • 1.3.5 Гипонимы
    • 1.4 Родственные слова
    • 1.5 Этимология
    • 1.6 Фразеологизмы и устойчивые сочетания
    • 1.7 Перевод
    • 1.8 Библиография
Wikipedia-logo.png В Викиданных есть лексема лямбда (L124565).

Морфологические и синтаксические свойства[править]

падежед. ч.мн. ч.
Им.ля́мбдаля́мбды
Р.ля́мбдыля́мбд
Д.ля́мбделя́мбдам
В.ля́мбдуля́мбды
Тв.ля́мбдой
ля́мбдою
ля́мбдами
Пр.ля́мбделя́мбдах

ля́м-бда

Существительное, неодушевлённое, женский род, 1-е склонение (тип склонения 1a по классификации А. А. Зализняка).

Корень: -лямбд-; окончание: [Тихонов, 1996].

Произношение[править]

  • МФА: ед. ч. [ˈlʲambdə], мн. ч. [ˈlʲambdɨ]

Семантические свойства[править]

Wikipedia-logo.png Лямбда

Значение[править]
  1. 11-я буква греческого алфавита ◆ Отсутствует пример употребления (см. рекомендации).
  2. физ., разг. длина волны ◆ Отсутствует пример употребления (см. рекомендации).
Синонимы[править]
  1. длина волны
Антонимы[править]
Гиперонимы[править]
  1. буква
Гипонимы[править]

Родственные слова[править]

Ближайшее родство

Этимология[править]

Происходит от ??

Фразеологизмы и устойчивые сочетания[править]

Перевод[править]

буква
  • Английскийen: lambda
  • Арабскийar: لامدا
  • Армянскийhy: լամբդա
  • Астурийскийast: lambda
  • Африкаансaf: lambda
  • Баварскийbar: Lambda, Lamda
  • Белорусскийbe: лямбда
  • Болгарскийbg: ламбда, ламда ж.
  • Венгерскийhu: lambda
  • Галисийскийgl: lambda
  • Греческийel: λάμδα
  • Грузинскийka: ლამბდა
  • Датскийda: lambda
  • Ивритhe: למדא
  • Испанскийes: lambda
  • Итальянскийit: lambda м.
  • Коми-зырянскийkom: лямбда
  • Курдскийku: lamda
  • Латышскийlv: lambda
  • Лезгинскийlez: лямбда
  • Литовскийlt: lambda
  • Маратхиmr: लँब्डा
  • Немецкийde: Lambda ср.
  • Нидерландскийnl: lambda
  • Окситанскийoc: lambda
  • Панджабиpa: ਲੈਮਡਾ
  • Персидскийfa: لامبدا
  • Польскийpl: lambda
  • Сербскийsr (кир.): ламбда
  • Словацкийsk: lambda
  • Словенскийsl: lambda
  • Тайскийth: แลมดา
  • Тамильскийta: லாம்டா
  • Украинскийuk: лямбда
  • Финскийfi: lambda
  • Французскийfr: lambda м.
  • Хорватскийhr: lambda
  • Чешскийcs: lambda
  • Шведскийsv: lambda
  • Эсперантоиeo: lambdo
  • Эстонскийet: lambda

Библиография[править]

Interrobang.svg Для улучшения этой статьи желательно:

  • Добавить пример словоупотребления для значения с помощью {{пример}}
  • Добавить все семантические связи (отсутствие можно указать прочерком, а неизвестность — символом вопроса)
  • Добавить сведения об этимологии в секцию «Этимология»
  • Добавить хотя бы один перевод для каждого значения в секцию «Перевод»

лямбда-обозначение — Викисловарь

Содержание

  • 1 Русский
    • 1.1 Морфологические и синтаксические свойства
    • 1.2 Произношение
    • 1.3 Семантические свойства
      • 1.3.1 Значение
      • 1.3.2 Синонимы
      • 1.3.3 Антонимы
      • 1.3.4 Гиперонимы
      • 1.3.5 Гипонимы
    • 1.4 Родственные слова
    • 1.5 Этимология
    • 1.6 Фразеологизмы и устойчивые сочетания
    • 1.7 Перевод
    • 1.8 Библиография

Морфологические и синтаксические свойства[править]

падежед. ч.мн. ч.
Им.ля́мбда-обозначе́ниеля́мбда-обозначе́ния
Р.ля́мбда-обозначе́нияля́мбда-обозначе́ний
Д.ля́мбда-обозначе́ниюля́мбда-обозначе́ниям
В.ля́мбда-обозначе́ниеля́мбда-обозначе́ния
Тв.ля́мбда-обозначе́ниемля́мбда-обозначе́ниями
Пр.ля́мбда-обозначе́нииля́мбда-обозначе́ниях

ля́м-бда-о·бо-зна-че́-ни·е

Существительное, неодушевлённое, средний род, 2-е склонение (тип склонения 7a по классификации А. А. Зализняка).

Корень: .

Произношение[править]

  • МФА: [ˌlʲambdə ɐbəznɐˈt͡ɕenʲɪɪ̯ə]

Семантические свойства[править]

Значение[править]
  1. ◆ Отсутствует пример употребления (см. рекомендации).
  2. ◆ Отсутствует пример употребления (см. рекомендации).
Синонимы[править]
Антонимы[править]
Гиперонимы[править]
Гипонимы[править]

Родственные слова[править]

Ближайшее родство

Этимология[править]

Происходит от ??

Фразеологизмы и устойчивые сочетания[править]

Перевод[править]

Список переводов

Библиография[править]

Interrobang.svg Для улучшения этой статьи желательно:

  • Добавить описание морфемного состава с помощью {{морфо-ru}}
  • Добавить значение в секцию «Семантические свойства»
  • Добавить синонимы в секцию «Семантические свойства»
  • Добавить гиперонимы в секцию «Семантические свойства»
  • Добавить сведения об этимологии в секцию «Этимология»
  • Добавить хотя бы один перевод в секцию «Перевод»

Лямбда-исчисление: описание теоремы, особенности, примеры

Лямбда-исчисление — это формальная система в математической логике для выражения подсчетов на основе абстракции и применения функций с использованием привязки и подстановки переменных. Это универсальная модель, которую можно применять для проектирования любой машины Тьюринга. Впервые введена лямбда-исчисления Черчем, известным математиком, в 1930-х годах.

Система состоит из построения лямбда-членов и выполнения над ними операций сокращения.

Пояснения и приложения

Греческая буква lambda (λ) используется в лямбда-выражениях и лямбда-терминах для обозначения связывания переменной в функции.

Лямбда-исчисление может быть нетипизировано или типизировано. В первом варианте функции могут быть применены только в том случае, если они способны принимать данные этого типа. Типизированные лямбда-исчисления слабее, могут выражать меньшее значение. Но, с другой стороны, они позволяют доказывать больше вещей.

Одной из причин того, что существует много разных типов — это желание ученых сделать больше, не отказываясь от возможности доказывать сильные теоремы лямбда-исчислений.

Система находит применение во многих различных областях математики, философии, лингвистики, и компьютерных наук. В первую очередь, лямбда-исчисления — это расчет, который сыграл важную роль в развитии теории языков программирования. Именно стили функционального создания реализуют системы. Они также являются актуальной темой исследований в теории этих категорий.

Для чайников

Лямбда-исчисление была введена математиком Алонзо Черчем в 1930-х годах в рамках исследования основ науки. Первоначальная система была показана как логически несовместимая в 1935 году, когда Стивен Клин и Дж. Б. Россер разработали парадокс Клини-Россера.

В последствии, в 1936 году Черч выделил и опубликовал только ту часть, которая имеет отношение к расчетам, то, что сейчас называется нетипизированным лямбда-исчислением. В 1940 он также представил более слабую, но логически непротиворечивую теорию, известную как система простого типа. В свое работе он объясняет всю теорию простым языком, поэтому, можно сказать, что Черч опубликовал лямбду исчисления для чайников.

До 1960-х годов, когда выяснилось его отношение к языкам программирования, λ стала лишь формализмом. Благодаря применениям Ричарда Монтегю и других лингвистов в семантике естественного языка, исчисление стало занимать почетное место как в лингвистике, так и в информатике.

Происхождение символа

Лямбда не обозначает слово или аббревиатуру, она возникла, благодаря ссылки в «Принципиальной математике» Рассела, за которой следуют два типографских изменения. Пример обозначения: для функции f с f (y) = 2y + 1 равно 2ŷ + 1. И здесь используется символ каретки («шляпа») над y для пометки входной переменной.

Церковь изначально намеревалась использовать аналогичные символы, но наборщики не смогли разместить символ «шляпа» над буквами. Поэтому вместо этого они напечатали его изначально как «/\y.2y+1». В следующем эпизоде редактирования наборщики заменили «/ \» на визуально похожий символ.

Введение в лямбда исчисление

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

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

Лямбда-термины

Синтаксис исчисления определяет некоторые выражения как допустимые, а другие — как недействительные. Также, как различные строки символов являются допустимыми программами на Си, а какие-то — нет. Действительное выражение лямбда-исчисления называется «лямбда-термином».

Следующие три правила дают индуктивное определение, которое можно применять для построения всех синтаксически допустимых понятий:

Переменная x сама по себе является действительным лямбда-термином:

  • если T это ЛТ, и x непостоянная, то (lambda xt) называется абстракцией.
  • если T, а также s понятия, то (TS) называется приложением.

Ничто другое не является лямбда-термином. Таким образом, понятие действительно тогда и только тогда, когда оно может быть получено повторным применением этих трех правил. Тем не менее некоторые скобки могут быть опущены в соответствии с другими критериями.

Определение

Лямбда-выражения состоят из:

  • переменных v 1, v 2,…, v n,…
  • символов абстракции ‘λ’ и точки ‘.’
  • скобок ().

Множество Λ, может быть определено индуктивно:

  • Если x переменная, то x ∈ Λ;
  • x непостоянная и M ∈ Λ, то (λx.M) ∈ Λ;
  • M, N ∈ Λ, то (MN) ∈ Λ.

Обозначение

Чтобы сохранить нотацию лямбда-выражений в незагроможденном виде, обычно применяются следующие соглашения:

  • Внешние скобки опущены: MN вместо (MN).
  • Предполагается, что приложения остаются ассоциативными: взамен ((MN) P) можно написать MNP.
  • Тело абстракции простирается дальше вправо: λx.MN означает λx. (MN), а не (λx.M) N.
  • Сокращается последовательность абстракций: λx.λy.λz.N можно λxyz.N.

Свободные и связанные переменные

Оператор λ соединяет свою непостоянную, где бы он ни находился в теле абстракции. Переменные, попадающие в область, называются связанными. В выражении λ x. М, часть λ х часто называют связующим. Как бы намекая, что переменные становятся группой с добавлением Х х к М. Все остальные неустойчивые называются свободными.

Например, в выражении λ y. х х у, у — связанная непостоянная, а х — свободная. И также стоит обратить внимание, что переменная сгруппирована своей «ближайшей» абстракцией. В следующем примере решение лямбда-исчисления представлено единственным вхождением x, которое связано второй составляющей:

λ x. y (λ x. z x)

Множество свободных переменных M обозначается как FV (M) и определяется рекурсией по структуре терминов следующим образом:

  • FV (x) = {x}, где x — переменная.
  • FV (λx.M) = FV (M) \ {x}.
  • FV (MN) = FV (M) ∪ FV (N).

Формула, которая не содержит свободных переменных, называется закрытой. Замкнутые лямбда-выражения также известны как комбинаторы и эквивалентны терминам в комбинаторной логике.

Сокращение

Значение лямбда-выражений определяется тем, как они могут быть сокращены.

Существует три вида урезания:

  • α-преобразование: изменение связанных переменных (альфа).
  • β-редукция: применение функций к своим аргументам (бета).
  • η-преобразование: охватывает понятие экстенсиональности.

Здесь речь также идет о полученных эквивалентностях: два выражения являются β-эквивалентными, если они могут быть β-преобразованы в одно и то же составляющее, а α / η-эквивалентность определяется аналогично.

Термин redex, сокращение от приводимого оборота, относится к подтемам, которые могут быть сокращены одним из правил. Лямбда исчисление для чайников, примеры:

(λ x.M) N является бета-редексом в выражении замены N на x в M. Составляющее, к которому сводится редекс, называется его редуктом. Редукция (λ x.M) N есть M [x: = N].

Если x не является свободной в M, λ х. М х также ет-REDEX с регулятором М.

α-преобразование

Альфа-переименования позволяют изменять имена связанных переменных. Например, λ x. х может дать λ у. у. Термины, которые отличаются только альфа-преобразованием, называются α-эквивалентными. Часто при использовании лямбда-исчисления α-эквивалентные считаются взаимными.

Точные правила для альфа-преобразования не совсем тривиальны. Во-первых, при данной абстракции переименовываются только те переменные, которые связаны с одной и той же системой. Например, альфа-преобразование λ x.λ x. x может привести к λ y.λ x. х, но это может не ввергнуть к λy.λx.y Последний имеет иной смысл, чем оригинал. Это аналогично понятию программирования затенения переменных.

Во-вторых, альфа-преобразование невозможно, если оно приведет к захвату непостоянной другой абстракцией. Например, если заменить x на y в λ x.λ y. x, то можно получить λ y.λ y. у, что совсем не то же самое.

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

В нотации индекса Де Брюйна любые два альфа-эквивалентных термина синтаксически идентичны.

Замена

Изменения, написанные Е [V: = R], представляют собой процесс замещения всех свободных вхождений переменной V в выражении Е с оборотом R. Подстановка в терминах λ определяется лямбдой исчисления рекурсии по структуре понятий следующим образом (примечание: x и y — только переменные, а M и N — любое λ-выражение).

x [x: = N] ≡ N

y [x: = N] ≡ y, если x ≠ y

(M 1 M 2) [x: = N] ≡ (M 1 [x: = N]) (M 2 [x: = N])

(λ x.M) [x: = N] ≡ λ x.M

(λ y.M) [x: = N] y λ y. (M [x: = N]), если x ≠ y, при условии, что y ∉ FV (N).

Для подстановки в лямбда-абстракцию иногда необходимо α-преобразовать выражение. Например, неверно, чтобы (λ x. Y) [y: = x] приводило к (λ x. X), потому что замещенный x должен был быть свободным, но в итоге был связанным. Правильная замена в этом случае (λ z. X) с точностью до α-эквивалентности. Стоит обратить внимание, что замещение определяется однозначно с верностью до лямбды.

β-редукция

Бета-редукция отражает идею применения функции. Бета-восстановительный определяется в терминах замещения: ((X V. E) Е ‘) является Е [V: = Е’].

Например, предполагая некоторое кодирование 2, 7, ×, имеется следующее β-уменьшение: ((λ n. N × 2) 7) → 7 × 2.

Бета-редукция может рассматриваться как то же самое, что и концепция локальной сводимости при естественной дедукции через изоморфизм Карри – Ховарда.

η-преобразование

Эта-конверсия выражает идею экстенсиональности, которая в этом контексте заключается в том, что две функции равны тогда, когда они дают одинаковый результат для всех аргументов. Эта конвертация обменивает между λ x. (F x) и f всякий раз, когда x не кажется свободным в f.

Данное действие может рассматриваться как то же самое, что и концепция локальной полноты в естественной дедукции через изоморфизм Карри – Ховарда.

Нормальные формы и слияние

Для нетипизированного лямбда-исчисления β-редукция как правило переписывания не является ни сильно нормализующей, ни слабо.

Тем не менее можно показать, что β-редукция сливается при работе до α-преобразования (т. е. можно считать две нормальные формы равными, если возможно α-преобразование одной в другую).

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

Дополнительные методы программирования

Существует большое количество идиом создания для лямбда-исчисления. Многие из них были первоначально разработаны в контексте использования систем в качестве основы для семантики языка программирования, эффективно применяя их в качестве создания низкого уровня. Поскольку некоторые стили включают лямбда-исчисление (или что-то очень похожее) в качестве фрагмента, эти методы также находят применение в практическом создании, но затем могут восприниматься как неясные или чужие.

Именованные константы

В лямбда-исчислении библиотека принимает форму набора ранее определенных функций, в которой термины являются просто конкретными константами. Чистое исчисление не имеет понятия именованных неизменных, поскольку все атомные лямбда-термины являются переменными. Но их также можно имитировать, выделив непостоянную в качестве имени константы, используя лямбда-абстракцию для связывания этой изменчивой в основной части, и применить эту абстракцию к намеченному определению. Таким образом, если использовать f для обозначения M в N, можно сказать,

(λ ф. Н) М.

Авторы часто вводят синтаксическое понятие, такое как let, чтобы разрешить писать все в более интуитивном порядке.

f = M в N

Объединяя в цепочку такие определения, можно написать «программу» лямбда-исчисления как ноль или более дефиниций функций, за которыми следует один лямбда-член, используя те определения, которые составляют основную часть программы.

Заметным ограничением этого let является то, что имя f не определено в M, поскольку M находится вне области привязки лямбда-абстракции f. Это означает, что атрибут рекурсивной функции не может использоваться как M с let. Более продвинутая синтаксическая конструкция letrec, которая позволяет писать рекурсивные определения функций в этом стиле, вместо этого дополнительно использует комбинаторы с фиксированной точкой.

Печатные аналоги

Данный тип является типизированным формализмом, который использует символ для обозначения анонимной функции абстракция. В этом контексте типы обычно являются объектами синтаксической природы, которые присваиваются лямбда-терминам. Точная натура зависит от рассматриваемого исчисления. С определенной точки зрения, типизированные ЛИ можно рассматривать как уточнения нетипизированного ЛИ. Но с другой стороны, их также можно считать более фундаментальной теорией, а нетипизированное лямбда-исчисление — особым случаем только с одним типом.

Типизированные ЛИ являются основополагающими языками программирования и основой функциональных, таких как ML и Haskell. И, более косвенно, императивных стилей создания. Типизированные лямбда-исчисления играют важную роль в разработке систем типов для языков программирования. Здесь типизируемость обычно захватывает желательные свойства программы, например, она не вызовет нарушения доступа к памяти.

Типизированные лямбда-исчисления тесно связаны с математической логикой и теорией доказательств через изоморфизм Карри – Говарда, и их можно рассматривать как внутренний язык классов категорий, например, который просто является стилем декартовых замкнутых.

обозначение — это… Что такое лямбда-обозначение?



лямбда-обозначение
лог. lambda notation

Большой англо-русский и русско-английский словарь.
2001.

  • лямбда-нотация
  • лямбда-оператор

Смотреть что такое «лямбда-обозначение» в других словарях:

  • Лямбда (буква) — Греческий алфавит Α α  альфа Β β  бета …   Википедия

  • ЛЯМБДА (AL) — Обозначение длины световой волны …   Толковый словарь по психологии

  • Лямбда — Греческий алфавит Αα Альфа Νν Ню …   Википедия

  • Лямбда (символ) — Греческий алфавит Α α альфа Β β бета …   Википедия

  • Лямбда² Печи — λ² Печи Звезда Наблюдательные данные (Эпоха J2000.0) Тип Одиночная звезда Прямое восхождение …   Википедия

  • Список звёздных имён — Это список традиционных имен для звезд, в основном полученных из арабского и латыни. См. также список звезд по созвездиям, который дает различные названия, происхождения, и величины. Чтобы узнать больше о любой из этих звезд, Вы можете заглянуть… …   Википедия

  • Λ — Греческий алфавит Α α альфа Β β бета …   Википедия

  • Греческий алфавит — Тип: консонантно вокалическое письмо Языки: греческий …   Википедия

  • Coq — (фр. coq  петух)  интерактивное программное средство доказательства теорем, использующее собственный язык функционального программирования (Gallina) с зависимыми типами. Позволяет записывать математические теоремы и их… …   Википедия

  • Список обозначений в физике — Необходимо проверить качество перевода и привести статью в соответствие со стилистическими правилами Википедии. Вы можете помочь …   Википедия

  • Однородная функция — степени   числовая функция такая, что для любого и выполняется равенство: причём называют порядком однородности. Различают также положительно однородные функции, для которых равенство …   Википедия

функций высшего порядка и лямбды — язык программирования Kotlin


Отредактировать страницу

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

Чтобы облегчить это, Kotlin, как статически типизированный язык программирования, использует семейство
функциональные типы для представления функций и предоставляет набор специализированных языковых конструкций, таких как лямбда-выражения.

Функция высшего порядка — это функция, которая принимает функции как параметры или возвращает функцию.

Хорошим примером является идиома функционального программирования fold
для коллекций, который принимает начальное значение аккумулятора и функцию объединения и строит свое возвращаемое значение с помощью
последовательное объединение текущего значения аккумулятора с каждым элементом коллекции, замена аккумулятора:

  fun  Коллекция  .fold (
    начальная: R,
    объединить: (acc: R, nextElement: T) -> R
): Р {
    аккумулятор var: R = начальный
    for (element: T в этом) {
        аккумулятор = комбайн (аккумулятор, элемент)
    }
    возвратный аккумулятор
}
  

В приведенном выше коде параметр объединить имеет тип функции (R, T) -> R , поэтому он принимает функцию, которая
принимает два аргумента типа R и T и возвращает значение типа R .Он вызывается внутри для -цикла, и возвращаемое значение
затем присваивается аккумулятору .

Чтобы вызвать fold , нам необходимо передать ему экземпляр типа функции в качестве аргумента, а лямбда-выражения (более подробно описанные ниже) широко используются для
для этого на сайтах вызова функций высшего порядка:

  fun main () {
    // sampleStart
    val items = listOf (1, 2, 3, 4, 5)
    
    // Лямбды - это блоки кода, заключенные в фигурные скобки.items.fold (0, {
        // Когда лямбда имеет параметры, они идут первыми, за ними следует '->'
        acc: Int, i: Int ->
        print ("acc = $ acc, i = $ i,")
        val результат = acc + i
        println ("результат = $ результат")
        // Последнее выражение в лямбде считается возвращаемым значением:
        результат
    })
    
    // Типы параметров в лямбде необязательны, если их можно вывести:
    val connectedToString = items.fold ("Элементы:", {acc, i -> acc + "" + i})
    
    // Ссылки на функции также могут использоваться для вызовов функций более высокого порядка:
    val product = items.fold (1, Int :: раз)
    // sampleEnd
    println ("connectedToString = $ connectedToString")
    println ("продукт = $ продукт")
}
  

В следующих разделах более подробно объясняются концепции, упомянутые выше.

Kotlin использует семейство типов функций, например (Int) -> String , для объявлений, которые имеют дело с функциями: val onClick: () -> Unit = ... .

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

  • Все типы функций имеют список типов параметров в скобках и тип возвращаемого значения: (A, B) -> C обозначает тип, который
    представляет функции, принимающие два аргумента типа A и B и возвращающие значение типа C .
    Список типов параметров может быть пустым, как в () -> A . Тип возврата Unit
    не может быть пропущено.

  • Типы функций

    могут опционально иметь дополнительный тип приемника , который указывается перед точкой в ​​обозначении:
    тип A.(B) -> C представляет функции, которые могут быть вызваны на объекте-приемнике A с параметром B и
    вернуть значение C .
    Функциональные литералы с получателем часто используются вместе с этими типами.

  • Функции приостановки относятся к типам функций особого типа, которые имеют модификатор suspend в
    обозначения, например suspend () -> Unit или suspend A. (B) -> C .

Обозначение типа функции может дополнительно включать имена для параметров функции: (x: Int, y: Int) -> Point .Эти имена можно использовать для документирования значения параметров.

Чтобы указать, что тип функции допускает значение NULL, используйте круглые скобки: ((Int, Int) -> Int)? .

Типы функций можно комбинировать с помощью скобок: (Int) -> ((Int) -> Unit)

Обозначение стрелки является правоассоциативным, (Int) -> (Int) -> Unit эквивалентно предыдущему примеру, но не
((Int) -> (Int)) -> Unit .

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

  typealias ClickHandler = (Кнопка, ClickEvent) -> Единица
  

Есть несколько способов получить экземпляр типа функции:

  • Использование блока кода внутри функционального литерала в одной из форм:

    Функциональные литералы с получателем могут использоваться как значения типов функций с получателем.

  • Использование вызываемой ссылки на существующее объявление:
    • локальная функция верхнего уровня, член или функция расширения: :: isOdd , String :: toInt ,
    • свойство верхнего уровня, члена или расширения: List :: size ,
    • конструктор: :: Regex

    Сюда входят связанные вызываемые ссылки, указывающие на член определенного экземпляра: foo :: toString .

  • Использование экземпляров пользовательского класса, реализующего тип функции в качестве интерфейса:
  класс IntTransformer: (Int) -> Int {
    переопределить оператор fun invoke (x: Int): Int = TODO ()
}

val intFunction: (Int) -> Int = IntTransformer ()
  

Компилятор может определить типы функций для переменных, если имеется достаточно информации:

  val a = {i: Int -> i + 1} // Предполагаемый тип (Int) -> Int
  

Не буквальные значений типов функций с приемником и без него взаимозаменяемы, так что приемник может стоять в
для первого параметра и наоборот.Например, значение типа (A, B) -> C может быть передано или назначено
где ожидается A. (B) -> C и наоборот:

  fun main () {
    // sampleStart
    val repeatFun: String. (Int) -> String = {раз -> this.repeat (раз)}
    val twoParameters: (String, Int) -> String = repeatFun // ОК
    
    fun runTransformation (f: (String, Int) -> String): String {
        return f ("привет", 3)
    }
    val result = runTransformation (repeatFun) // ОК
    // sampleEnd
    println ("результат = $ результат")
}
  

Обратите внимание, что тип функции без получателя выводится по умолчанию, даже если переменная инициализируется ссылкой.
к функции расширения.Чтобы изменить это, явно укажите тип переменной.

Значение типа функции может быть вызвано с помощью оператора invoke (...) : f.invoke (x) или просто f (x) .

Если значение имеет тип получателя, объект получателя должен быть передан в качестве первого аргумента.
Другой способ вызвать значение типа функции с помощью получателя — добавить к нему объект-получатель,
как если бы значение было функцией расширения: 1.foo (2) ,

Пример:

  fun main () {
    // sampleStart
    val stringPlus: (Строка, Строка) -> Строка = Строка :: плюс
    val intPlus: Int.(Инт) -> Инт = Инт :: плюс
    
    println (stringPlus.invoke ("<-", "->"))
    println (stringPlus («Привет,», «мир!»))
    
    println (intPlus.invoke (1, 1))
    println (intPlus (1, 2))
    println (2.intPlus (3)) // вызов типа расширения
    // sampleEnd
}
  

Иногда полезно использовать встроенные функции, которые обеспечивают гибкий поток управления,
для функций высшего порядка.

Лямбда-выражения и анонимные функции

Лямбда-выражения и анонимные функции являются «функциональными литералами», т.е.е. функции, которые не объявлены,
но сразу прошло как выражение. Рассмотрим следующий пример:

  макс (строки, {a, b -> a.length  

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

  забавное сравнение (a: строка, b: строка): Boolean = a.длина  

Полная синтаксическая форма лямбда-выражений выглядит следующим образом:

  val sum: (Int, Int) -> Int = {x: Int, y: Int -> x + y}
  

Лямбда-выражение всегда заключено в фигурные скобки,
объявления параметров в полной синтаксической форме заключаются в фигурные скобки и имеют необязательные аннотации типов,
тело идет после знака -> . Если предполагаемый тип возвращаемого значения лямбды не равен Unit , последний (или, возможно, одиночный)
выражение внутри лямбда-тела рассматривается как возвращаемое значение.

Если мы оставим все необязательные аннотации, то, что останется, будет выглядеть так:

  val sum = {x: Int, y: Int -> x + y}
  

В Kotlin существует соглашение: если последний параметр функции является функцией, то лямбда-выражение
переданный как соответствующий аргумент можно поместить вне скобок:

  val product = items.fold (1) {acc, e -> acc * e}
  

Такой синтаксис также известен как завершающая лямбда .

Если лямбда является единственным аргументом этого вызова, круглые скобки можно полностью опустить:

Очень часто лямбда-выражение имеет только один параметр.

Если компилятор может сам вычислить подпись, разрешается не объявлять единственный параметр и опускать -> .
Параметр будет неявно объявлен под именем it :

  ints.filter {it> 0} // этот литерал имеет тип '(it: Int) -> Boolean'
  

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

Следовательно, два следующих фрагмента эквивалентны:

  ints.filter {
    val shouldFilter = это> 0
    shouldFilter
}

ints.filter {
    val shouldFilter = это> 0
    return @ filter shouldFilter
}
  

Это соглашение, наряду с передачей лямбда-выражения вне скобок, позволяет
Код в стиле LINQ:

  strings.filter {it.length == 5} .sortedBy {it}.карта {it.toUpperCase ()}
  

Если лямбда-параметр не используется, вы можете поставить знак подчеркивания вместо его имени:

  map.forEach {_, value -> println ("$ value!")}
  

Деструктуризация в лямбдах описывается как часть деклараций деструктуризации.

В синтаксисе лямбда-выражения, представленном выше, отсутствует возможность указывать тип возвращаемого значения
функция. В большинстве случаев в этом нет необходимости, поскольку тип возвращаемого значения может быть определен автоматически.Однако если вы
Если нужно указать это явно, вы можете использовать альтернативный синтаксис: анонимная функция .

  удовольствие (x: Int, y: Int): Int = x + y
  

Анонимная функция очень похожа на объявление обычной функции, за исключением того, что ее имя опущено. Его тело
может быть выражением (как показано выше) или блоком:

  fun (x: Int, y: Int): Int {
    вернуть x + y
}
  

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

  цел.фильтр (удовольствие (элемент) = элемент> 0)
  

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

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

Еще одно различие между лямбда-выражениями и анонимными функциями - это поведение
неместные возвраты. Выписка return без метки
всегда возвращается из функции, объявленной с ключевым словом fun . Это означает, что вернет
внутри лямбда-выражения будет возвращено из включающей функции, тогда как вернет внутри
анонимная функция вернется из самой анонимной функции.

Лямбда-выражение или анонимная функция (а также локальная функция и объектное выражение)
может получить доступ к его закрытию , т.е.е. переменные, объявленные во внешней области видимости. Переменные, захваченные в замыкании, можно изменить в лямбде:

.

  var sum = 0
ints.filter {it> 0} .forEach {
    сумма + = это
}
печать (сумма)
  

Типы функций с приемником, такие как A. (B) -> C , могут быть созданы с помощью специальной формы функциональных литералов -
функциональные литералы с приемником.

Как сказано выше, Kotlin предоставляет возможность вызывать экземпляр типа функции с получателем, предоставляющим объект-получатель .

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

Это поведение аналогично функциям расширения, которые также позволяют получить доступ к членам объекта-получателя.
внутри тела функции.

Вот пример функционального литерала с получателем вместе с его типом, где плюс вызывается на
объект-получатель:

  сумма значений: Цел.(Int) -> Int = {другое -> plus (другое)}
  

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

  val sum = fun Int. (Other: Int): Int = this + other
  

Лямбда-выражения могут использоваться как функциональные литералы с приемником, когда тип приемника может быть выведен из контекста.
Один из наиболее важных примеров их использования - типобезопасные компоновщики:

  класс HTML {
    веселое тело () {...}
}

fun html (init: HTML. () -> Unit): HTML {
    val html = HTML () // создаем объект-получатель
    html.init () // передаем объект-получатель в лямбду
    вернуть html
}

html {// здесь начинается лямбда с получателем
    body () // вызов метода объекта-получателя
}
  

,

Лямбда-нотация

Der Lambda-Kalkül ist eine formale Sprache zur Untersuchung von Funktionen, die Funktionsdefinitionen, das Definieren formaler, sowie das Auswerten und Einsetzen aktueller Параметр regelt.

Geschichte

Der Lambda-Kalkül wurde von Alonzo Church und Stephen Kleene in den 1930er Jahren eingeführt. Church benutzte ihn, sowohl um 1936 eine negative Antwort auf das Entscheidungsproblem zu geben, als auch eine Fundierung eines logischen Systems zu finden, wie es Russells und Whiteheads Principia Mathematica zugrunde lag.Mittels des untypisierten Lambda-Kalküls kann man klar Definieren, was eine berechenbare Funktion ist. Die Frage, ob zwei Lambda-Ausdrücke (s.u.) äquivalent sind, kann im Allgemeinen nicht algorithmisch entschieden werden. In seiner typisierten Form kann der Kalkül benutzt werden, um Logik höherer Stufe darzustellen. Der Lambda-Kalkül hat die Entwicklung funktionaler Programmiersprachen, die Forschung um Typsysteme von Programmiersprachen im Allgemeinen als auch moderne Teildisziplinen in der Logik wie Typtheorie wesentlich beeinflusst.

Meilensteine ​​der Entwicklung waren im Einzelnen:

  • Nach der Einführung die frühe Entdeckung, dass sich mit dem Lambda-Kalkül alles ausdrücken lässt, был человеком с современным программированием или Turing-Maschine ausdrücken kann. In anderen Worten: Im Sinne des Konzepts der Berechenbarkeit sind die drei gleich mächtig.
  • Konrad Zuse hat Ideen aus dem Lambda-Kalkül 1942–1946 в seinen Plankalkül einfließen lassen.
  • John McCarthy hat sie Ende der fünfziger Jahre verwendet und damit die minimalen Funktionen der Programmiersprache LISP Definiert.
  • Die typisierten Varianten des Lambda-Kalküls führten zu modernen Programmiersprachen wie ML или Haskell.
  • Als überaus fruchtbar erwies sich die Idee, Ausdrücke des typisierten Lambda-Kalküls zur Repräsentation von Termen einer Logik zugrunde zu legen, den Lambda-Kalkül также als Meta-Logik den zu. Erstmals von Church 1940 in seiner Theory of Simple Types präsentiert, führte sie einerseits zu modernen Theorembeweisern für Logiken höherer Stufe und…
  • andererseits in den 70er und 80er Jahren zu Logiken mit immer mächtigeren Typsystemen, in dem sich z.B. logische Beweise и sich как Lambda-Ausdruck darstellen lassen.
  • In Anlehnung an den Lambda-Kalkül wurde für die Beschreibung nebenläufiger Prozesse der Pi-Kalkül von Robin Milner in den 90er Jahren entwickelt.

Der untypisierte Lambda-Kalkül

Einführung

Im Lambda-Kalkül geht es im Wesentlichen um Ausdrücke und ihre Umformung. Um den Lambda-Kalkül auf ein Problem anzuwenden, konstruiert man Ausdrücke, die sich wie das Problem verhalten - так wie man beim Lösen von Textaufgaben in der Mathematik auch vorgehen kann.Der Lambda-Kalkül kann auf vielfältigere Probleme angewandt werden als beispielsweise die auch bei Nicht-Mathematikern weit verbreiteten Rechenmethoden.

Im Lambda-Kalkül steht jeder Ausdruck für eine Funktion mit nur einem Argument; sowohl Argumente als auch Resultate solcher Funktionen sind wiederum Funktionen. Eine Funktion kann anonym durch eine so genannte Lambda-Abstraktion Definiert werden, die Zuordnung des Arguments zum Resultat beschreibt. Zum Beispiel wird die erhöhe-um-2 Funktion f ( x ) = x + 2 im Lambda-Kalkül durch die Lambda-Abstraktion λ x . x + 2 (или эквивалент durch λ y . y + 2; der Name des formalen Parameters ist unerheblich) beschrieben; f (3) (die so genannte Funktionsanwendung) kann daher als (λ x . x + 2) 3 geschrieben werden. Die Funktionsanwendung ist linksassoziativ: f x y ist syntaktisch gleichbedeutend mit ( f x ) y . Offensichtlich sollten die Ausdrücke: (λ x . x +3) ((λ x . x +2) 0) и (λ x . x + 3) 2 и 2 + 3 äquivalent sein - dies motiviert die β-Kongruenzregel (siehe UNTEN). Eine zweistellige Funktion kann im Lambda-Kalkül durch eine einstellige Funktion dargestellt werden, die einstellige Funktion als Resultat zurückgibt (siehe auch Schönfinkeln bzw. Currying). Die Funktion f ( x , y ) = x - y kann zum Beispiel durch λ x y . x - y dargestellt werden. Denn mit der β-Kongruenzregel sind die Ausdrücke (λ x . Λ y . x - y ) 7 2, (λ y . 7 - y ) 2 и 7−2 ä эквивалент.

Nicht jeder Lambda-Ausdruck kann auf Definite Werte reduziert werden wie im obigen Beispiel. Man betrachte z. Б.

x . x x ) (λ x . x x )

или

x . x x x ) (λ x . x x x )

und ermittele die β-kongruenten Terme, um sich ein Bild zu machen. (λ x . x x ) wird auch als Ω-Kombinator bezeichnet; ((λ x . x x ) (λ x . x x )) высота Ω. Dementsprechend ist ((λ x . x x x ) (λ x . x x x )) Ω 2 и т. Д.

Streng genommen enthält der Lambda-Kalkül keine Symbole für die Zahlen und die Addition. Allerdings zeigt sich, dass sie als Abkürzungen für Lambda-Ausdrücke innerhalb des Kalküls beschrieben werden können (siehe unten).

Die Ausdrücke des Lambda-Kalküls können freie Variablen enthalten, d. час Variablen, die nicht durch ein außenstehendes λ gebunden sind. Zum Beispiel ist die Variable y in dem Ausdruck (λ x . y ) frei; sie repräsentiert eine Funktion, die stets das Resultat y ergibt. Dies macht im Allgemeinen die Umbenennung von formalen Parametern notwendig, z. Б. Венн

x . Λ y . y x ) (λ x . y )

auf

λ z . z x . y )

abgeleitet werden soll.

Ein Spezialfall des Lambda-Kalküls ist die sogenannte Kombinatorische Logik.

Формальное определение

In seiner einfachsten, dennoch vollständigen Form gibt es im Lambda-Kalkül drei Sorten von Termen (T), hier в Backus-Naur-Form:

T :: = a (переменная) | (T T) (Приложение) | λa.T (Лямбда, auch Abstraktion genannt)

wobei a für ein trustbiges Symbol aus einer mindestens abzählbar-unendlichen Menge von Variablensymbolen (kurz: Variablen) steht. Für praktische Zwecke wird der Lambda-Kalkül üblicherweise noch um eine weitere Sorte von Termen, den Konstantensymbolen , erweitert.

Die Menge der freien Variablen FV kann индуктивная über der Struktur der λ-Terme wie folgt Definiert Werden:

  1. FV (a) = {a} , подпадающая под термическую переменную a
  2. FV (T1 T2) = FV (T1) ∪ FV (T2) für Applikationen, und
  3. FV (λ a. T) = FV (T) \ {a} , впадает в термин Term eine Abstraktion ist, sind seine freien Variablen die freien Variablen von T außer a .

Die Menge der gebundenen Variablen B (T) eines Термины T errechnet sich auch индуктив:

  1. B (a) = {} , не соответствует термической переменной a
  2. B (T1 T2) = B (T1) ∪ B (T2) für Applikationen, und
  3. B (λ а.T) = B (T) ∪ {a} , Fall der Term eine Abstraktion ist, sind seine gebundenen Variablen die gebundenen Variablen von T vereinigt a .

Mittels der Definition von freien und gebundenen Variablen kann nun der Begriff der (freien) Переменная замена (Einsetzung) индуктивное определение werden durch:

  1. a [x ← T] = a падает Переменная x ungleich a
  2. a [a ← T] = T
  3. (T1 T2) [x ← T] = (T1 [x ← T] T2 [x ← T])
  4. (λ а.T ') [a ← T] = (λ a. T')
  5. (λ a. T ') [x ← T] = (λ a. T' [x ← T]) падения Переменная x ungleich a und fall FV (T) disjunkt von B ( λ а. Т ') .

Hinweis: x ← T stehe für die Ersetzung von x durch T.

Man beachte, dass die Замена nur partiell Definiert ist; ggf. müssen gebundene Variablen geeignet umbenannt werden (siehe α-Kongruenz im Folgenden), so dass niemals eine freie Variable in einem Substitut durch Einsetzung für eine Variable gebunden wird.

Über der Menge der λ-Terme können nun Kongruenzregeln (hier == geschrieben) Definiert werden, die die Intuition official fassen, dass zwei Ausdrücke dieselbe Funktion beschreiben. Diese Relationen sind durch die sogenannte α-Konversion , die β-Konversion sowie die η-Konversion erfasst.

Kongruenzregeln

α-Конверсия

Умереть α-преобразование формально для идеи, dass die Namen von gebundenen Variablen «Schall und Rauch» sind; г.Б. bedeuten λ x . x и λ y . y dieselbe Funktion. Allerdings sind die Details nicht ganz so einfach wie es zunächst erscheint: Eine Reihe von Einschränkungen müssen beachtet werden, wenn gebundene Variablen durch andere gebundene Variablen ersetzt werden.

Formal lautet die Regel wie folgt:

λ В . E == λ W . E [ V W ]

падает W в E nirgends frei vorkommt und W in E dort nicht gebunden ist, wo es ein V ersetzt.Da eine Kongruenzregel in jedem Teilterm anwendbar ist, erlaubt sie die Ableitung, dass λ x . (λ x . x ) x gleich λ y . (λ x . x ) y ист.

β-Конверсия

Die β-Konversionsregel formisiert das Konzept der «Funktionsanwendung». Wird sie ausschließlich von links nach rechts angewandt, spricht man auch von β-Reduktion. Formal lässt sie sich durch

((λ В . E ) E ') == E [ V E' ]

beschreiben, wobei all freien Variablen in E ' in E [ V E' ] frei bleiben müssen (siehe Nebenbedingung bei der Substitutionsdefinition).

Ein Term heißt «в β-нормальной форме», wenn keine β-Reduktion mehr anwendbar ist (nicht für all Terme existiert eine β-Normalform; siehe Ω). Ein tiefes Resultat von Church und Rosser über den λ-Kalkül besagt, dass die Reihenfolgen von α-Konversionen und β-Reduktionen in gewissem Sinn keine Rolle spielt: wenn man einen Term zu zwei Termen T1 und et esit, gibt estep t2 able immer eine Möglichkeit, T1 и T2 jeweils zu einem gemeinsamen Срок действия T3 abzuleiten.

η-Конверсия

Die η-Konversion kann optional zum Kalkül hinzugefügt werden. Sie formisiert das Konzept der Extensionalität, d. час dass zwei Funktionen genau dann gleich sind, wenn sie für all Argumente dasselbe Resultat liefern. Formal ist die η-Konversion beschrieben durch:

λ x . f x == f , wenn x nicht freie Variable от f ist.

Anmerkungen

  • Jeder Term, der die Bedingung der β-Regel erfüllt, wird β-reduzibel genannt.
  • Die β-Reduktion ist im Allgemeinen nicht eindeutig; es kann mehrere «Ansatzpunkte» (β-Redexe) für die Anwendung der β-Regel geben, weil die Regelanwendung in allen Teiltermen möglich ist.
  • Wenn mehrere Folgen von β-Reduktionen möglich sind und mehrere davon zu einem nicht-β-reduziblen Term führen, so sind diese Terme bis auf α-Kongruenz gleich.
  • Wenn jedoch eine Reihenfolge der β zu einem nicht-β-reduziblen Term (einem Ergebnis) führt, so tut dies auch die Стандартный порядок сокращения , bei der das im Term erste Lambda zuerst verwendet wird.
  • Bei der so genannten de-Bruijn-Notation werden die Variablennamen weggelassen. Stattdessen werden Zahlen geschrieben, die die Anzahl der Lambda-Terme zwischen der Variable (также eine Zahl) und dem bindenden Lambda-Ausdruck angibt. Diese Darstellung wird часто в Computerprogrammen verwendet.

Weitere Beispiele

  • Wenn man wahr als Abkürzung für λx.λy.x versteht und falsch als Abkürzung für λx.λy.y, dann ist der Term λx.λy. ((x y) falsch ) eine Möglichkeit (von vielen), die logische Funktion und darzustellen, denn erfüllt die Forderungen, die man an die Funktion и stellt:
    • ((und wahr) wahr) = (((λx.λy. ((Xy) falsch)) wahr) wahr) = (wahr wahr) falsch = ((λx.λy.x) wahr) falsch = (λy. wahr) falsch = wahr
    • ((und wahr) falsch) =… = (wahr falsch) falsch =… = (λy.falsch) falsch = falsch
    • ((und falsch) wahr) = (falsch wahr) falsch = ((λx.λy.y) wahr) falsch = (λy.y) falsch = ложь
    • ((und falsch) falsch) = (falsch falsch) falsch =… = (λy.y) falsch = falsch
  • Man kann in ähnlicher Weise Zahlen, Tupel und Listen in λ-Ausdrücken codieren (z. B. durch sogenannte Church-Numerale)
  • Man kann trustbige rekursive Funktionen durch den Fixpunkt-Kombinator Y (= λ г . (Λ x , г ( x x )) (λ x . г ( x ) x ))) дарстеллен.

Typisierter Lambda-Kalkül

Die zentrale Idee typisierten Lambda-Kalküls ist es, nur noch Lambda-Ausdrücke zu betrachten, denen sich ein Typ durch ein System von Typinferenzregeln zuordnen lässt. Das einfachste Typsystem, das von Church 1940 in seiner Theory of Simple Types vorgestellt wurde, sieht die Typen vor, die durch folgende Grammatik in Backus-Naur-Form generiert werden:


TT ::= \quad I \quad

Den Typ I ( человека ) kann man sich als Zahlen vorstellen, O wird für boolesche Werte wie True und False verwendet.

Zusätzlich wird eine Umgebung Γ Definiert; dies ist eine Funktion, die Variablensymbolen Typen TT zuordnet.

Ein Tripel aus einer Umgebung Γ, einem Ausdruck E und einem Typ T , geschrieben {\Gamma \vdash E::T} wird ein Typurteil genannt.

Nun können die Inferenzregeln Beziehungen zwischen Ausdrücken, ihren Typen und Typurteilen herstellen:

 {{} \over \Gamma \vdash v :: \Gamma(v) } \qquad {\rm (Variable)}
{ \Gamma \vdash t_1 :: (\tau_1 \rarr \tau_2) \quad \Gamma \vdash t_2 :: \tau_1 \over \Gamma \vdash (t_1 t_2) :: \tau_2 }\qquad ({\rm Funktionsanwendung})
{ \Gamma[a \mapsto\tau_1] \vdash t :: \tau_2 \over \Gamma \vdash \lambda a. t :: \tau_1 \rarr \tau_2}\qquad ({\rm Abstraktion})

Hierbei ist {\Gamma[a \mapsto\tau]} diejenige Funktion, die an der Stelle a den Typ τ zuordnet, und ansonsten die Funktion Γ ist.

Durch Einführung einer zweiten Umgebung sind auch Konstantensymbole behandelbar; eine weitere wichtige Erweiterung besteht darin, in Typen auch die Kategorie der Typvariablen α, β, γ, e t c или Typkonstruktoren wie S e t (α), L i s t (β), e t c zuzulassen: so entstehen schon sehr mächtige funktionale oder logische Kernsprachen.

Es ist entscheidbar, ob ein untypisierter Term sich typisieren lässt, selbst wenn die Umgebung Γ unbekannt ist (eine Variante mit Typvariablen und Typkonstruktoren ist Milners Algorithm W ).

Die Menge der typisierbaren Ausdrücke ist eine echte Teilmenge des untypisierten Lambda-Kalküls; г. B. lässt sich der Y-Kombinator nicht typisieren. Andererseits ist für typisierte Ausdrücke die Gleichheit zwischen zwei Funktionen modulo α und β Konversionen entscheidbar.Es ist bekannt, dass das Matching-Problem auf Lambda-Ausdrücken bis zur vierten Ordnung entscheidbar ist. Das Unifikationsproblem ist unentscheidbar; Allerdings gibt es praktisch brauchbare приблизительный алгоритм.

Anwendung in der Semantik

Die Semantik ist dasjenige Teilgebiet der Linguistik, welches die Bedeutung natürlichsprachlicher Ausdrücke analysiert. Die formale Semantik nutzt dazu zunächst einfache Mittel der Prädikatenlogik und Mengenlehre. Diese erweitert man um Grundlagen des Lambda-Kalküls, etwa um mittels Lambda-Abstraktion Propositionen als Eigenschaften zu repräsentieren und komplexere Nominalphrasen, Adjektivphrasen und einige Verbalphrasen darstellen zu können.Grundlage ist etwa eine modelltheoretische semantische Interpretation dertensionalen Logik Ричард Монтекки.

Siehe auch

Ссылки

  • Das gefürchtete Lambda-Kalkül Eine Einführung.
  • Einführung in den λ-Kalkül Gute, etwas flippige Einführung in den λ-Kalkül (около 100 Seiten, als PS- и PDF-Dokument)
  • Стивен Клини, Теория натуральных чисел в формальной логике , Американский журнал математики, 57 (1935), стр. 153–173 и 219–244.Enthält eine Sammlung von Funktionen im λ-Kalkül.
  • Алонзо Черч, Неразрешимая проблема элементарной теории чисел , Американский журнал математики, 58 (1936), стр. 345–363. Dieses Papier enthält den Beweis, dass die Äquivalenz von Ausdrücken unentscheidbar ist.
  • Джим Ларсон, Введение в лямбда-исчисление и схему . Eine einfache Einführung für Programmierer.

Literatur

  • Хенк Барендрегт: Лямбда-исчисление, его синтаксис и семантика. Северная Голландия, 1984, ISBN 978-0-444-87508-2
  • Роберто М. Амадио, Пьер-Луи Куриен: доменов и лямбда-исчисления. Cambridge University Press, 1998, ISBN 0521622778
  • Го-Цян Чжан: Логика доменов. Springer, 1991, ISBN 978-0-8176-3570-1
  • Самсон Абрамский: Типизированные лямбда-исчисления и приложения. Springer, 2001, ISBN 978-3-540-41960-0

Фонд Викимедиа.

.

лямбда-нотации - это ... Что такое лямбда-нотация?

  • Лямбда-нотация - Der Lambda Kalkül ist eine formale Sprache zur Untersuchung von Funktionen, die Funktionsdefinitionen, das Definieren formaler, sowie das Auswerten und Einsetzen aktueller Parameter regelt. Inhaltsverzeichnis 1 Geschichte 2 Der untypisierte…… Deutsch Wikipedia

  • лямбда-обозначение - Такие термины, как «Синус 60 °» или «отец Гегеля», относятся к числу или личности.Но он включает термин «Sine…» или «отец…». «Синус x» или «отец y» обозначают функцию, относящуюся соответственно к числу или человеку, в частности…… Философский словарь

  • лямбда - нотация… Философский словарь

  • Лямбда-исчисление - В математической логике и информатике лямбда-исчисление, также обозначаемое как λ-исчисление, представляет собой формальную систему, предназначенную для исследования определения функции, ее применения и рекурсии.Его представили Алонзо Черч и Стивен Коул…… Википедия

  • Notation Bra-Ket - Cet article fait partie de la série quantique postulats de la mécanique quantique Histoire de la… Wikipédia en Français

  • Бюстгальтер с обозначением - Это статья, являющаяся частью серии количественной механики Постулаты количественной механики Histoire de la… Wikipédia en Français

  • Notation de Dirac - Notation bra ket Cet article fait partie de la série quantique postulats de la mécanique quantique Histoire de la… Wikipédia en Français

  • Notation de dirac - Notation bra ket Cet article fait partie de la série quantique postulats de la mécanique quantique Histoire de la… Wikipédia en Français

  • Lambda-Calcul - «Понятие решающей способности будущего премьер-министра, которое принимает и поддерживает точное эквивалентное математическое описание для существующих алгоритмов.»Стивен Клини, в книге« Истоки рекурсивной функции… Wikipédia en Français

  • »

  • Лямбда-калькуляция - «Понятие решающей способности будущего премьер-министра является приемлемым для обслуживания в соответствии с точным эквивалентным математическим описанием для существующих алгоритмов. »Стивен Клини, в книге« Истоки рекурсивной функции… Wikipédia en Français

  • »

  • Бюстгальтер с обозначением - Бюстгальтер с обозначением, который вводится Поля Дирака для облегчения исследования математических наук, больше, чем австралийских дизайнеров, которые представляют собой векторные аспекты квантовой техники (voir de la mécanique quantique)… Wikipédia en Français

  • ,

    лямбда-нотация - определение - английский

    Примеры предложений с «лямбда-нотацией», память переводов

    QED И стилистически здесь я собираюсь использовать лямбда-нотацию, потому что это намного легче думать, когда вы имеете дело с процедурой, - строчные процедуры, чтобы понять, что процедуры - это объекты, с которыми я имею дело, поэтому я собираюсь использовать здесь лямбда-нотацию. WikiMatrix Как указано в статье Питера Ландина 1965 года «Соответствие между АЛГОЛОМ 60 и лямбда-нотацией Черча», языки последовательного процедурного программирования можно понять в терминах лямбда-исчисления, которое обеспечивает базовые механизмы процедурной абстракции и процедуры (подпрограммы) применение. КАЧЕСТВО: Не могли бы вы показать определение средней влажности без использования лямбда-обозначений в обоих случаях. ПРОФЕССОР: QED Вам придется привыкнуть к лямбда-нотации, потому что я собираюсь ее использовать. WikiMatrix Помимо системы степеней окисления, используемой в номенклатуре запасов для координационных соединений, и лямбда-обозначений, используемых в номенклатуре неорганической химии ИЮПАК, степень окисления является более четким показателем электронного состояния атомов в молекуле. LASER-wikipedia2Такая модель формализует связь между лямбда-исчислением как чисто синтаксической системой и лямбда-исчислением как системой записи для управления конкретными математическими функциями. WikiMatrix Математическая нотация Алонзо Чёрча, лямбда-исчисление, вдохновила Лисп на использование слова «лямбда» в качестве ключевого слова для введения процедуры, а также повлияла на развитие методов функционального программирования, включающих использование функций высшего порядка в Лиспе. WikiMatrix Чтобы не загромождать нотацию лямбда-выражений, обычно применяются следующие соглашения. WikiMatrix Представленное здесь представление машины Кривина основано на обозначениях лямбда-терминов, использующих индексы де Брёйна, и предполагает, что члены, для которых он вычисляет нормальные формы головы, замкнуты. WikiMatrix Лямбда-исчисление не может выразить это так же прямо, как некоторые другие обозначения: все функции в лямбда-исчислении анонимны, поэтому мы не можем ссылаться на значение, которое еще не определено, внутри лямбда-члена, определяющего то же значение. WikiMatrixLisp изначально создавался как практическая математическая нотация для компьютерных программ, основанная на нотации лямбда-исчисления Алонзо Чёрча. LASER-wikipedia2Lisp изначально создавался как практическая математическая система обозначений для компьютерных программ, основанная на лямбда-исчислении, что делает его особенно подходящим для обучения теориям вычислений. WikiMatrixZ основан на стандартной математической нотации, используемой в аксиоматической теории множеств, лямбда-исчислении и логике предикатов первого порядка.

    Показаны страницы 1. Найдено 29 предложения с фразой lambda notation.Найдено за 4 мс.Накопители переводов создаются человеком, но выравниваются с помощью компьютера, что может вызвать ошибки. Найдено за 1 мс.Накопители переводов создаются человеком, но выравниваются с помощью компьютера, что может вызвать ошибки. Они поступают из многих источников и не проверяются. Имейте в виду.

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *