ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » система типов » Лямбда-исчисление


Лямбда-исчисление

Сообщений 1 страница 2 из 2

1

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

Например:
[html]
<a href="https://jacksongl.github.io/files/demo/lambda/index.htm">https://jacksongl.github.io/files/demo/lambda/index.htm</a>
<br /><a href="https://www.cl.cam.ac.uk/~rmk35/lambda_calculus/lambda_calculus.html">https://www.cl.cam.ac.uk/~rmk35/lambda_calculus/lambda_calculus.html</a>[/html]

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

Разные ссылки:
https://habr.com/ru/post/215807/
«лямбда-исчисление - изучение необходимо, ... когда собираетесь заняться исследованием систем типов»

Отредактировано Лис (2021-12-27 07:03:25)

0

2

Переменная
    Переменные обозначаются одиночными символами, неделимы, означают что-то.
    Запись переменной в виде символа считается/признаётся термом.
    что если количество необходимых переменных превзойдёт количество символов в алфавите?
    тогда получится, что нужно создать другой язык, в котором переменные смогут обозначаться по-другому,
    например несколькими символами, а разделять их будут не границы символов,
    а дополнительно вставленные пробелы.
Функция
    для λ-исчисления важно то, что f трактуется как алгоритм,
    вычисляющий результат по заданному входному значению.
    f - это имя функции
    запись
    f a - это запись "вызова" функции с аргументом а (см. "Аппликация")
λ-абстракция
    λ-абстракция "строит"/"создаёт" функции по заданным выражениям (выражения и термы очень похожи, см. "Терм")
    запись λ x . t,
    где t - это терм, а x - это переменная
    обозначает, что мы определили функцию без имени (λ функция от аргумента x),
    значение которой равно значению выражения t ≡ t [x] (выражения и термы очень похожи, см. "Терм")
    (построили над выражением t функцию)
    λ-абстракция коротко может называться "Абстракция".
    λ-абстракция это операция в лямбда-исчислении (см. "λ-исчисление")
Терм λ-исчисления
    кусок текста на языке λ-исчисления. Текст на языке λ-исчисления может рассматриваться как выполняемый код (алгоритм), тогда
    терм - это кусок кода(алгоритма) записанный на языке λ-исчисления

    Термы λ-исчисления называют так же λ-термами,
    Термы λ-исчисления называют также объектами («обами»)

    1) термами являются переменные
    2) термом является запись операции "λ-абстракция"
    (λ x.M) это терм, если x переменная, а M - терм
    3) термом является запись (M N)
    (M N) это терм, если M и N - это термы
    Существует возможность, что при склейке термов
    возникнет возможность применения операции "Аппликация"

    т.е. терм это некая последовательность переменных и функций
    может так оказаться что можно все функции вычислить и получится цепочка переменных
    а может быть переменных нет, и функции не все с параметрами, тогда получится функция
    а может оказаться и просто некая последовательность из переменных и функций
    (кусок текста/кода на языке λ-исчисления)
Аппликация
    Аппликация это вызов функции с аргументом .
    аппликация f к a может рассматриваться двояко:
    - как результат (применения f к a), или же (вопрос, а что такое "Результат"? это терм (см. "Терм"))
    - как процесс вычисления f a.

    Аппликация может так же называться "применение".
    Аппликацию обычно обозначают f a, где f — функция, а a — аргумент.
    Запись f a соответствует общепринятой в математике записи f(a),
    которая тоже иногда используется (см. "Функция").
    для λ-исчисления важно то, что f трактуется как алгоритм,
    вычисляющий результат по заданному входному значению.

    интерпретация аппликации как процесса связана с понятием β-редукции (см. β-редукция).
    Аппликация это операция в лямбда-исчислении (см. "λ-исчисление")
β-редукция
    β-редукция является единственной «существенной» аксиомой λ-исчисления
    с β-редукций λ-исчисление обладает свойством полноты по Тьюрингу

    для вычисления выражения
    (λx.t) a
    в которое входят и абстракция и аппликация
    необходимо выполнить подстановку терма "а" в выражение "t" вместо переменной "x"
    (λx.t) a = t [x := a]
    (см. "Подстановка" ?).

    Выражение вида
    (λx.t) a
    т.е. применение абстракции к некому терму, называется редексом (redex).
λ-исчисление
    https://ru.wikipedia.org/wiki/Лямбда-исчисление
    опирается на понятие "Термы λ-исчисления" (см. "Терм λ-исчисления")
    опирается на понятие "β-редукция" (см. "β-редукция")
    λ-исчисление включает в себя операции "Аппликация" и "λ-абстракция"
    операции "Аппликация" и "λ-абстракция" положены в основу λ-исчисления.
    операции "Аппликация" и "λ-абстракция" называют "Фундаментальные операции λ-исчисления"
η-преобразование
    выражает идею, что две функции являются идентичными тогда и только тогда, когда,
    будучи применёнными к любому аргументу, дают одинаковые результаты.
    f = (λx.f) x
    если x не имеет свободных вхождений в f, иначе
    свободная переменная x после преобразования станет связанной внешней абстракцией или наоборот
    способ дать функции имя?
    Можно ввести в синтаксис языка новый сахар: "описание функции через знак равенства" и
    f = (λx.f)
    "описание разных функций на разных строках"
    Возникнут, правда, проблемы с тем, что переменные станут разными, некоторые - просто переменные, которые что-то там значат, а некоторые - функции, которые надо поискать "в разных строках".
    Если в языке нет типов (то есть, существует единственный тип), и имена переменных хранят функции, то этот единственный тип должен быть типом "функция", т.е. все переменные в языке - это функции, только некоторые определены, а некоторые - нет.

Если рецепт - это алгоритм, то опишите приготовление манной каши при помощи λ-исчисления (юзерстори изложена в документе 1938, Николай Носов, "Мишкина каша").

Отредактировано Лис (2021-12-26 12:16:25)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » система типов » Лямбда-исчисление