Что такое лямбда зонд (датчик кислорода)
Содержание:
- Примеры лямбда-функций
- Что это такое
- Каррирование (карринг)
- β-редукция
- Аппликация и абстракция
- Семантика бестипового λ{\displaystyle \lambda }-исчисления
- Ближайшее окружение звезды
- Лямбда как программная конструкция
- Происхождение символа
- Печатные аналоги
- Титановый датчик
- Спецификация KIA Rio 1.6 GDI (G4FD)
- Пояснения и приложения
- Имя звезды
- Связь с рекурсивными функциями
- Связь с рекурсивными функциями
- Стандартные решения
- Свойства звезды
- Сокращение
- β-редукция
Примеры лямбда-функций
Теперь рассмотрим самые распространенные примеры использования лямбда-функций.
Лямбда-функция и map
Распространенная операция со списками в Python — применение операции к каждому элементу.
— это встроенная , принимающая в качестве аргумента функцию и последовательность. Она работает так, что применяет переданную функцию к каждому элементу.
Предположим, есть список целых чисел, которые нужно возвести в квадрат с помощью .
Обратите внимание на то, что в Python3 функция map возвращает объект , а в Python2 — список. Так, вместо определения функции и передачи ее в map в качестве аргумента, можно просто использовать лямбда для быстрого определения ее прямо внутри
В этом есть смысл, если упомянутая функция больше не будет использоваться в коде
Так, вместо определения функции и передачи ее в map в качестве аргумента, можно просто использовать лямбда для быстрого определения ее прямо внутри. В этом есть смысл, если упомянутая функция больше не будет использоваться в коде.
Вот еще один пример.
Лямбда-функция и filter
— это еще одна встроенная функция, которая фильтрует последовательность итерируемого объекта.
Другими словами, функция отфильтровывает некоторые элементы итерируемого объекта (например, списка) на основе какого-то критерия. Критерий определяется за счет передачи функции в качестве аргумента. Она же применяется к каждому элементу объекта.
Если возвращаемое значение — , элемент остается. В противном случае — отклоняется. Определим, например, простую функцию, которая возвращает для четных чисел и — для нечетных:
С лямбда-функциями это все можно сделать максимально сжато. Код выше можно преобразовать в такой, написанный в одну строку.
И в этом сила лямбда-функций.
Что это такое
Лямбда-исчисление — это формальная система, то есть набор объектов, формул, аксиом и правил вывода. Благодаря таким системам с помощью абстракций моделируется теория, которую можно использовать в реальном мире, и при этом выводить в ней новые математически доказуемые утверждения. Например, язык запросов SQL основан на реляционном исчислении. Благодаря математической базе, на которой он существует, оптимизаторы запросов могут анализировать алгебраические свойства операций и влиять на скорость работы.
Но речь сегодня не о SQL, а о функциональных языках. Именно для них лямбда-исчисление является основой. Функциональные языки далеко не столь популярны, как, например, объектно-ориентированные, но тем не менее прочно занимают свою нишу. Кроме того, многие идеи из функционального программирования и лямда-исчисления постепенно прокрадываются в другие языки, под видом новых фич.
Если вы изучали формальные языки, то знаете о таком понятии как Машина Тьюринга. Эта вычислительная абстракция определяет класс вычислимых функций. Этот класс столь важен, так как по тезису Черча он эквивалентен понятию алгоритма. Другими словами, любую программу, которую можно запрограммировать на вычислительном устройстве, можно воспроизвести и на машине Тьюринга. А для нас главное то, что лямбда-исчисление по мощности эквивалентно машине Тьюринга и определяет этот же класс функций. Причем создателем лямбда-исчисления является тот самый Алонзо Черч!
Каррирование (карринг)
Функция двух переменных x{\displaystyle x} и y{\displaystyle y} f(x,y)=x+y{\displaystyle f(x,y)=x+y} может быть рассмотрена как функция одной переменной x{\displaystyle x}, возвращающая функцию одной переменной y{\displaystyle y}, то есть как выражение λx.λy.x+y{\displaystyle \ \lambda x.\lambda y.x+y}. Такой приём работает точно так же для функций любой арности. Это показывает, что функции многих переменных могут быть выражены в λ{\displaystyle \lambda }-исчислении и являются «синтаксическим сахаром». Описанный процесс превращения функций многих переменных в функцию одной переменной называется карринг (также: каррирование), в честь американского математика Хаскелла Карри, хотя первым его предложил М. Э. Шейнфинкель ().
β-редукция
Поскольку выражение λx.2⋅x+1{\displaystyle \lambda x.2\cdot x+1} обозначает функцию, ставящую в соответствие каждому x{\displaystyle x} значение 2⋅x+1{\displaystyle 2\cdot x+1}, то для вычисления выражения
(λx.2⋅x+1) 3{\displaystyle (\lambda x.2\cdot x+1)\ 3},
в которое входят и аппликация и абстракция, необходимо выполнить подстановку числа 3 в терм 2⋅x+1{\displaystyle 2\cdot x+1} вместо переменной x{\displaystyle x}. В результате получается 2⋅3+1=7{\displaystyle 2\cdot 3+1=7}. Это соображение в общем виде записывается как
и носит название β-редукция. Выражение вида (λx.t) a{\displaystyle (\lambda x.t)\ a}, то есть применение абстракции к некому терму, называется редексом (redex). Несмотря на то, что β-редукция по сути является единственной «существенной» аксиомой λ{\displaystyle \lambda }-исчисления, она приводит к весьма содержательной и сложной теории. Вместе с ней λ{\displaystyle \lambda }-исчисление обладает свойством полноты по Тьюрингу и, следовательно, представляет собой простейший язык программирования.
Аппликация и абстракция
В основу λ-исчисления положены две фундаментальные операции:
Аппликация (лат. applicatio — прикладывание, присоединение) означает применение или вызов функции по отношению к заданному значению. Её обычно обозначают f a{\displaystyle f\ a}, где f{\displaystyle f} — функция, а a{\displaystyle a} — аргумент
Это соответствует общепринятой в математике записи f(a){\displaystyle f(a)}, которая тоже иногда используется, однако для λ-исчисления важно то, что f{\displaystyle f} трактуется как алгоритм, вычисляющий результат по заданному входному значению. В этом смысле аппликация f{\displaystyle f} к a{\displaystyle a} может рассматриваться двояко: как результат применения f{\displaystyle f} к a{\displaystyle a}, или же как процесс вычисления f a{\displaystyle f\ a}
Последняя интерпретация аппликации связана с понятием β-редукции.
Абстракция или λ-абстракция (лат. abstractio — отвлечение, отделение) в свою очередь строит функции по заданным выражениям. Именно, если t≡t{\displaystyle t\equiv t} — выражение, свободно содержащее x{\displaystyle x}, тогда запись λx.t{\displaystyle \ \lambda x.t} означает: λ{\displaystyle \lambda } функция от аргумента x{\displaystyle x}, которая имеет вид t{\displaystyle t}, обозначает функцию x↦t{\displaystyle x\mapsto t}. Таким образом, с помощью абстракции можно конструировать новые функции. Требование, чтобы x{\displaystyle x} свободно входило в t{\displaystyle t}, не очень существенно — достаточно предположить, что λx.t≡t{\displaystyle \lambda x.t\equiv t}, если это не так.
Семантика бестипового λ{\displaystyle \lambda }-исчисления
Тот факт, что термы λ{\displaystyle \lambda }-исчисления действуют как функции, применяемые к термам λ{\displaystyle \lambda }-исчисления (то есть, возможно, к самим себе), приводит к сложностям построения адекватной семантики λ{\displaystyle \lambda }-исчисления. Чтобы придать λ{\displaystyle \lambda }-исчислению какой-либо смысл, необходимо получить множество D{\displaystyle D}, в которое вкладывалось бы его пространство функций D→D{\displaystyle D\to D}. В общем случае такого D{\displaystyle D} не существует по соображениям ограничений на мощности этих двух множеств, D{\displaystyle D} и функций из D{\displaystyle D} в D{\displaystyle D}: второе имеет бо́льшую мощность, чем первое.
Эту трудность в начале 1970-х годов преодолел Дана Скотт, построив понятие области D{\displaystyle D} (изначально на полных решётках, в дальнейшем обобщив до полного частично упорядоченного множества со специальной топологией) и урезав D→D{\displaystyle D\to D} до непрерывных в этой топологии функций. На основе этих построений была создана языков программирования, в частности, благодаря тому, что с помощью них можно придать точный смысл таким двум важным конструкциям языков программирования, как и типы данных.
Ближайшее окружение звезды
Следующие звёздные системы находятся на расстоянии в пределах 20 световых лет от системы Лямбда Возничего (включены только: самая близкая звезда, самые яркие (<6,5m) и примечательные звёзды). Их спектральные классы приведены на фоне цвета этих классов (эти цвета взяты из названий спектральных типов и не соответствуют наблюдаемым цветам звёзд):
Звезда | Спектральный класс | Расстояние, св. лет |
Капелла | G 5 III | 4.41 |
HD 29697 | K3 V | 15.64 |
Йота Персея | G0 V | 17.5 |
Глизе 176 | M2.5e V | 17.59 |
Хи¹ Ориона | G0 V | 18.07 |
Пси5 Возничего | G0 V | 18.57 |
111 Тельца | F8e V | 18.71 |
HD 21809 | G5 V? | 19.11 |
Тета Персея | F7 V | 19.78 |
Рядом со звездой, на расстоянии 20 световых лет, есть ещё порядка 25 красных, оранжевых и жёлтых карликов спектрального класса M, K, G и 2 белых карлика, которые в список не попали.
Лямбда как программная конструкция
>>> сортированный (список, ключ = слово лямбды: (Word ))
- В C# язык программирования выражение лямбды — анонимная функция, которая может содержать выражения и заявления.
- Языковая Нелямбда — функциональный язык программирования, основанный на комбинаторной логике, упрощении исчисления лямбды, которое не включает лямбду вообще, следовательно не-префикс.
- Автомобильный кислородный датчик (O датчик) также известен как исследование лямбды, датчик, sond, или зонд.
- Лямбда используется в искусстве и фотографии, чтобы относиться к цифровой печати Типа C, или к оборудованию, которое используется, чтобы произвести его.
- Лямбда использовалась Пифагором, чтобы обозначить «Последовательность числа лямбды» 1, 2, 3, 4, 9, 8, 27…, формировалась целыми числами формы 2 и 3 для неотрицательного целого числа i.
- В исследовании бензиновых двигателей Лямбда иногда относится к смеси воздуха/топлива, входящей в двигатель.
Происхождение символа
Лямбда не обозначает слово или аббревиатуру, она возникла, благодаря ссылки в «Принципиальной математике» Рассела, за которой следуют два типографских изменения. Пример обозначения: для функции f с f (y) = 2y + 1 равно 2ŷ + 1. И здесь используется символ каретки («шляпа») над y для пометки входной переменной.
Церковь изначально намеревалась использовать аналогичные символы, но наборщики не смогли разместить символ «шляпа» над буквами. Поэтому вместо этого они напечатали его изначально как «/\y.2y+1». В следующем эпизоде редактирования наборщики заменили «/ \» на визуально похожий символ.
Печатные аналоги
Данный тип является типизированным формализмом, который использует символ для обозначения анонимной функции абстракция. В этом контексте типы обычно являются объектами синтаксической природы, которые присваиваются лямбда-терминам. Точная натура зависит от рассматриваемого исчисления. С определенной точки зрения, типизированные ЛИ можно рассматривать как уточнения нетипизированного ЛИ. Но с другой стороны, их также можно считать более фундаментальной теорией, а нетипизированное лямбда-исчисление — особым случаем только с одним типом.
Типизированные ЛИ являются основополагающими языками программирования и основой функциональных, таких как ML и Haskell. И, более косвенно, императивных стилей создания. Типизированные лямбда-исчисления играют важную роль в разработке систем типов для языков программирования. Здесь типизируемость обычно захватывает желательные свойства программы, например, она не вызовет нарушения доступа к памяти.
Типизированные лямбда-исчисления тесно связаны с математической логикой и теорией доказательств через изоморфизм Карри – Говарда, и их можно рассматривать как внутренний язык классов категорий, например, который просто является стилем декартовых замкнутых.
Титановый датчик
Конструкции титанового и циркониевого датчиков схожи. Циркониевые датчики меняют напряжение, измеряя содержание кислорода в отработавших газах. Титановые датчики изменяют сопротивление посредством измерения содержания кислорода в выхлопных газах.
Чертеж с вырезом кислородного датчика со встроенным нагревательным элементом.
- Соединительные провода
- Внутренние контакты
- Керамическая опора
- Корпус датчика
- Нагревательный элемент
- Трубка с прорезью (Slotted tube)
- Опорное значение воздуха
- Керамический датчик
- Шайба
Спецификация KIA Rio 1.6 GDI (G4FD)
Используются два кислородных датчика:
Широкополосный кислородный датчик расположен перед каталитическим нейтрализатором.
Двухточечный кислородный датчик расположен за каталитическим нейтрализатором.
Блок управления использует сигнал широкополосного датчика, чтобы задать приблизительный состав топливовоздушной смеси.
Блок управления использует сигнал двухточечного датчика для коррекции смеси.
Блок управления может также осуществлять мониторинг действия каталитического нейтрализатора.
Пояснения и приложения
Греческая буква lambda (λ) используется в лямбда-выражениях и лямбда-терминах для обозначения связывания переменной в функции.
Лямбда-исчисление может быть нетипизировано или типизировано. В первом варианте функции могут быть применены только в том случае, если они способны принимать данные этого типа. Типизированные лямбда-исчисления слабее, могут выражать меньшее значение. Но, с другой стороны, они позволяют доказывать больше вещей.
Одной из причин того, что существует много разных типов — это желание ученых сделать больше, не отказываясь от возможности доказывать сильные теоремы лямбда-исчислений.
Система находит применение во многих различных областях математики, философии, лингвистики, и компьютерных наук. В первую очередь, лямбда-исчисления — это расчет, который сыграл важную роль в развитии теории языков программирования. Именно стили функционального создания реализуют системы. Они также являются актуальной темой исследований в теории этих категорий.
Имя звезды
λ Aurigae — (латинизированный вариант лат. Lambda Aurigae) является обозначением Байера. У звезды также имеется обозначение данное Флемстидом — 15 Aurigae.
Звезда, возможно, была названа «Аль Хурр», что означает «олень» по-арабски. λ Возничего, наряду с µ Возничего и ρ Возничего входила в астеризм «Палатка» англ. Al Ḣibāʽ (араб. ألحباع), как это было приведено у Казвини. Согласно каталогу звёзд в Техническом меморандуме 33-507 — сокращённый каталог звёзд, содержащий 537 названных звёзд — Al Ḣibāʽ был названием для трёх звёзд: λ Возничего как Al Ḣibāʽ I, µ Возничего как Al Ḣibāʽ II и σ Возничего как Al Ḣibāʽ III.
В китайской астрономии (англ.)русск., звезда относится к созвездию «Сеть» (англ.)русск. и астеризму 咸池 (Xián Chí), что означает «Область Гармонии» (англ. Pool of Harmony), состоящему из Лямбда Возничего, Ро Возничего и HD 36041. Следовательно, сама Лямбда Возничего известна как 咸池三 (Xián Chí sān, англ. the Third Star of Pool of Harmony — «Третья звезда Области Гармонии»).
Связь с рекурсивными функциями
Рекурсия — это определение функции через себя; на первый взгляд, лямбда-исчисление не позволяет этого, но это впечатление обманчиво. Например, рассмотрим рекурсивную функцию, вычисляющую факториал:
- f(n) = 1, if n = 0; else n × f(n - 1).
В лямбда-исчислении, функция не может непосредственно ссылаться на себя. Тем не менее, функции может быть передан параметр, связанный с ней. Как правило, этот аргумент стоит на первом месте. Связав его с функцией, мы получаем новую, уже рекурсивную функцию. Для этого аргумент, ссылающийся на себя (здесь обозначен как r{\displaystyle r}), обязательно должен быть передан в тело функции.
- g := λr. λn.(1, if n = 0; else n × (r r (n-1)))
- f := g g
Это решает специфичную проблему вычисления факториала, но решение в общем виде также возможно. Получив лямбда-терм, представляющий тело рекурсивной функции или цикл, передав себя в качестве первого аргумента, комбинатор неподвижной точки возвратит необходимую рекурсивную функцию или цикл. Функции не нуждаются в явной передаче себя каждый раз.
Существует несколько определений комбинаторов неподвижной точки. Самый простой из них:
- Y = λg.(λx.g (x x)) (λx.g (x x))В лямбда-исчислении, Y g{\displaystyle \operatorname {Y\ g} } — неподвижная точка g{\displaystyle \operatorname {g} }; продемонстрируем это:
- Y g
- (λh.(λx.h (x x)) (λx.h (x x))) g
- (λx.g (x x)) (λx.g (x x))
- g ((λx.g (x x)) (λx.g (x x)))
- g (Y g).Теперь, чтобы определить факториал, как рекурсивную функцию, мы можем просто написать g (Y g)n{\displaystyle \operatorname {g\ (Y\ g)} n}, где n{\displaystyle n} — число, для которого вычисляется факториал. Пусть n=4{\displaystyle n=4}, получаем:
g (Y g) 4 (λfn.(1, if n = 0; and n·(f(n-1)), if n>0)) (Y g) 4 (λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0)) 4 1, if 4 = 0; and 4·(g(Y g) (4-1)), if 4>0 4·(g(Y g) 3) 4·(λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0) 3) 4·(1, if 3 = 0; and 3·(g(Y g) (3-1)), if 3>0) 4·(3·(g(Y g) 2)) 4·(3·(λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0) 2)) 4·(3·(1, if 2 = 0; and 2·(g(Y g) (2-1)), if 2>0)) 4·(3·(2·(g(Y g) 1))) 4·(3·(2·(λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0) 1))) 4·(3·(2·(1, if 1 = 0; and 1·((Y g) (1-1)), if 1>0))) 4·(3·(2·(1·((Y g) 0)))) 4·(3·(2·(1·((λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0) 0)))) 4·(3·(2·(1·(1, if 0 = 0; and 0·((Y g) (0-1)), if 0>0)))) 4·(3·(2·(1·(1)))) 24
Каждое определение рекурсивной функции может быть представлено как неподвижная точка соответствующей функции, следовательно, используя Y{\displaystyle \operatorname {Y} }, каждое рекурсивное определение может быть выражено как лямбда-выражение. В частности, мы можем определить вычитание, умножение, сравнение натуральных чисел рекурсивно.
Связь с рекурсивными функциями
Рекурсия — это определение функции через себя; на первый взгляд, лямбда-исчисление не позволяет этого, но это впечатление обманчиво. Например, рассмотрим рекурсивную функцию, вычисляющую факториал:
- f(n) = 1, if n = 0; else n × f(n - 1).
В лямбда-исчислении, функция не может непосредственно ссылаться на себя. Тем не менее, функции может быть передан параметр, связанный с ней. Как правило, этот аргумент стоит на первом месте. Связав его с функцией, мы получаем новую, уже рекурсивную функцию. Для этого аргумент, ссылающийся на себя (здесь обозначен как r{\displaystyle r}), обязательно должен быть передан в тело функции.
- g := λr. λn.(1, if n = 0; else n × (r r (n-1)))
- f := g g
Это решает специфичную проблему вычисления факториала, но решение в общем виде также возможно. Получив лямбда-терм, представляющий тело рекурсивной функции или цикл, передав себя в качестве первого аргумента, комбинатор неподвижной точки возвратит необходимую рекурсивную функцию или цикл. Функции не нуждаются в явной передаче себя каждый раз.
Существует несколько определений комбинаторов неподвижной точки. Самый простой из них:
- Y = λg.(λx.g (x x)) (λx.g (x x))В лямбда-исчислении, Y g{\displaystyle \operatorname {Y\ g} } — неподвижная точка g{\displaystyle \operatorname {g} }; продемонстрируем это:
- Y g
- (λh.(λx.h (x x)) (λx.h (x x))) g
- (λx.g (x x)) (λx.g (x x))
- g ((λx.g (x x)) (λx.g (x x)))
- g (Y g).Теперь, чтобы определить факториал, как рекурсивную функцию, мы можем просто написать g (Y g)n{\displaystyle \operatorname {g\ (Y\ g)} n}, где n{\displaystyle n} — число, для которого вычисляется факториал. Пусть n=4{\displaystyle n=4}, получаем:
g (Y g) 4 (λfn.(1, if n = 0; and n·(f(n-1)), if n>0)) (Y g) 4 (λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0)) 4 1, if 4 = 0; and 4·(g(Y g) (4-1)), if 4>0 4·(g(Y g) 3) 4·(λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0) 3) 4·(1, if 3 = 0; and 3·(g(Y g) (3-1)), if 3>0) 4·(3·(g(Y g) 2)) 4·(3·(λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0) 2)) 4·(3·(1, if 2 = 0; and 2·(g(Y g) (2-1)), if 2>0)) 4·(3·(2·(g(Y g) 1))) 4·(3·(2·(λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0) 1))) 4·(3·(2·(1, if 1 = 0; and 1·((Y g) (1-1)), if 1>0))) 4·(3·(2·(1·((Y g) 0)))) 4·(3·(2·(1·((λn.(1, if n = 0; and n·((Y g) (n-1)), if n>0) 0)))) 4·(3·(2·(1·(1, if 0 = 0; and 0·((Y g) (0-1)), if 0>0)))) 4·(3·(2·(1·(1)))) 24
Каждое определение рекурсивной функции может быть представлено как неподвижная точка соответствующей функции, следовательно, используя Y{\displaystyle \operatorname {Y} }, каждое рекурсивное определение может быть выражено как лямбда-выражение. В частности, мы можем определить вычитание, умножение, сравнение натуральных чисел рекурсивно.
Стандартные решения
Стандарт языка предоставляет готовое решение этой проблемы в виде std::function<>. Действительно, объект std::function<> может оборачивать однородные лямбды:
Такое решение действительно решает большинство проблем, однако подходит далеко не во всех случаях. Из объекта std::function<> нельзя получить сырой указатель на функцию, чтобы передать его, например, в какое-нибудь legacy API. Допустим, у нас есть функция:
Интересно, что если мы попробуем передать в эту функцию любую из объявленных выше лямбд (l1 или l2), то код замечательно скомпилируется и запустится:
Так получается потому, что лямбда с пустым замыканием (их ещё называют лямбды без состояния) по стандарту может быть неявно преобразована в указатель на функцию:
Для обобщённого кода можно применить явный static_cast<>:
Есть простой синтаксический трюк, позволяющий не писать громоздкий static_cast<> и не указывать явно сигнатуру функции:
Этот трюк работает из-за того, что унарный оператор + имеет встроенную перегрузку для любого типа.
Такая перегрузка, применённая к объекту замыкания, вызывает неявное преобразование к указателю на функцию, что аналогично явному static_cast<>.
Свойства звезды
Лямбда Возничего — жёлтый карлик спектрального типа G1V, что указывает на то, что звезда использует водород в своём ядре в качестве ядерного «топлива». По составу звезда очень похожа на Солнце, а по массе и радиусу немного больше. Звезда имеет поверхностную гравитацию 4,02 СГС или 104,7 м/с2, то есть почти в три раза меньше, чем на Солнце (274,0 м/с2. Она на 73 % ярче Солнца и излучает энергию со своей внешней атмосферы при эффективной температуре около 5890 К, что придаёт ей желтоватый оттенок звезды G-типа.
Для того чтобы планета, аналогичная нашей Земле, получала примерно столько же энергии, сколько она получает от Солнца, её надо было бы поместить на расстоянии 1,35 а.е. (то есть несколько ближе Марса, чей радиус орбиты равен 1,56 а.е.). Причём с такого расстояния Лямбда Возничего выглядела бы на 25 % меньше нашего Солнца, каким мы его видим с Земли — 0,75° (угловой диаметр нашего Солнца — 0,5°).
Лямбда Возничего имеет низкий уровень поверхностной активности и находится в состоянии аналогичным минимуму Маундера на Солнце, возможно, в результате большого возраста (звезды, становясь старше, вращаются медленнее, в результате магнитного торможения).
Вращаясь с экваториальной скоростью 2 км/с (то есть со скоростью практически равной солнечной), этой звезде требуется порядка 35 дней, чтобы совершить полный оборот. В результате сочетания массы (на 7 % больше чем у Солнца) и светимости (поскольку звезды главной последовательности по мере увеличения возраста становится ярче), возраст Лямбда Возничего можно оценить в 6 2 млрд. лет (то есть на 1 7 млрд. лет старше Солнца). Учитывая теоретическое время жизни звезды в 8 млрд. лет, звезде, хотя в настоящее время она и остаётся настоящим карликом, осталось не так много времени, чтобы закончить ядерный синтез и стать настоящим субгигантом, как и всем звёздам её класса.
К сожалению, у звезды не обнаружено каких-либо планет, по крайней мере пока, хотя сама Лямбда Возничего, в некоторой степени, богата металлами (звезды, имеющие планеты, имеют тенденцию иметь больше металлов), а содержание железа (относительно водорода) на 15 % больше, чем у Солнца. Большинство других химических элементов также довольно велико, хотя азот и углерод несколько подавлены.
Лямбда Возничего была исследована на наличие избыточного инфракрасного излучения, которое может указывать на наличие околозвёздного диска из пыли, но никакого существенного избытка не наблюдалось. Звезда является возможным членом движущейся группы звёзд Эпсилон Индейца, члены которой имеют общее движение в пространстве. Компоненты пространственной скорости для этой звезды = км/с, то есть во много раз больше, чем у окружающих Солнце звёзд.
Сокращение
Значение лямбда-выражений определяется тем, как они могут быть сокращены.
Существует три вида урезания:
- α-преобразование: изменение связанных переменных (альфа).
- β-редукция: применение функций к своим аргументам (бета).
- η-преобразование: охватывает понятие экстенсиональности.
Здесь речь также идет о полученных эквивалентностях: два выражения являются β-эквивалентными, если они могут быть β-преобразованы в одно и то же составляющее, а α / η-эквивалентность определяется аналогично.
Термин redex, сокращение от приводимого оборота, относится к подтемам, которые могут быть сокращены одним из правил. Лямбда исчисление для чайников, примеры:
(λ x.M) N является бета-редексом в выражении замены N на x в M. Составляющее, к которому сводится редекс, называется его редуктом. Редукция (λ x.M) N есть M .
Если x не является свободной в M, λ х. М х также ет-REDEX с регулятором М.
β-редукция
Поскольку выражение λx.2⋅x+1{\displaystyle \lambda x.2\cdot x+1} обозначает функцию, ставящую в соответствие каждому x{\displaystyle x} значение 2⋅x+1{\displaystyle 2\cdot x+1}, то для вычисления выражения
(λx.2⋅x+1) 3{\displaystyle (\lambda x.2\cdot x+1)\ 3},
в которое входят и аппликация и абстракция, необходимо выполнить подстановку числа 3 в терм 2⋅x+1{\displaystyle 2\cdot x+1} вместо переменной x{\displaystyle x}. В результате получается 2⋅3+1=7{\displaystyle 2\cdot 3+1=7}. Это соображение в общем виде записывается как
и носит название β-редукция. Выражение вида (λx.t) a{\displaystyle (\lambda x.t)\ a}, то есть применение абстракции к некому терму, называется редексом (redex). Несмотря на то, что β-редукция по сути является единственной «существенной» аксиомой λ{\displaystyle \lambda }-исчисления, она приводит к весьма содержательной и сложной теории. Вместе с ней λ{\displaystyle \lambda }-исчисление обладает свойством полноты по Тьюрингу и, следовательно, представляет собой простейший язык программирования.