Вопросы по теме 'lambda-calculus'

Комбинатор S в Erlang
Я начинаю изучать лямбда-исчисление, и мне нужно реализовать комбинаторы I, S, K в Erlang. Конечно, S, K, I означает: S = λxyz.xz(yz) K = λxy.x I = λx.x У меня нет проблем с пониманием преобразования I = SKK на бумаге (как показано здесь:...
639 просмотров

Как только решение было найдено в лямбда-исчислении, насколько легко преобразовать его в код?
Если бы вы прочитали условие задачи, такое как что-то найденное на TopCoder, и преобразовали его в представление лямбда-исчисления, было бы простым упражнением «преобразовать» его в код Haskell или Lisp? Другими словами, можно ли решить проблему,...
657 просмотров

Понимание политипов в выводе типа Хиндли-Милнера
Я читаю статью в Википедии о Hindley– Вывод типа Милнера пытается разобраться в этом. Пока что я понял: Типы подразделяются на монотипы и политипы. Монотипы далее классифицируются как константы типа (например, int или string ) или как...
1908 просмотров

Лямбда-выражение Python составляет скрипт итератора
Я пишу скрипт на Python, который должен принимать список функций, написанных в виде лямбда-выражений, и возвращать состав всех функций, но у меня есть стрелка в скрипте, возможно, из-за того, как я использую лямбда-выражение. . Похоже, что даже...
2544 просмотров
schedule 19.02.2023

Цифры церкви: как мне интерпретировать числа из выражений?
Может кто-нибудь объяснить мне с помощью подстановок, как мы получаем число «ноль» или остальные натуральные числа? Например значение: "ноль" λf.λx.x если я применяю это выражение к другому выражению: "(λf.(λx.x)) a" затем с...
427 просмотров
schedule 08.03.2024

Рубиновое и лямбда-исчисление
Я пытаюсь понять лямбда-исчисление с помощью procs и ruby. Вот код: puts -> x { -> y {x.call(y) } } # => #<Proc:0x2a3beb0@C:/first-ruby.rb:1 (lambda)> puts -> x { x + 2}.call(1) # => 3 Что означает -> в приведенном...
608 просмотров
schedule 10.01.2024

Ищем Черч-кодировку (лямбда-исчисление) для определения ‹ , › , !=
Мне нужно создать некоторые лямбда-функции для > , ‹ и != Я понятия не имею, как это сделать, может ли кто-нибудь помочь мне, пожалуйста? PS: мы только начали с лямбда-исчисления, поэтому, пожалуйста, не предполагайте никаких предварительных...
4034 просмотров

Общая рекурсия в хвостовую рекурсию
Возможно ли теоретически преобразовать каждый вид общей рекурсии в хвостовую рекурсию? Эквивалентны ли они, например, с точки зрения лямбда-исчисления? Это спор между мной и знакомым. Я считаю, что это невозможно всегда. Например, если у вас...
85 просмотров

Расширение рекурсивных функций в Coq
Фон Я понимаю, что редукция Йота используется для уменьшения/расширения рекурсивных функций. Например, при следующем применении простой рекурсивной функции (факториал над натуральными числами): ((fix fact (n:nat):nat := match n with | O =>...
490 просмотров

Существует ли грамматика LL(k) для PCF?
Мы работаем над синтаксическим анализом сверху вниз в классе разработки компилятора. Примерами являются все java-подобные языки. Я решил попробовать простой функциональный язык, чтобы сделать его интересным, поэтому я выбрал PCF ( см., например,...
142 просмотров

Докажите распределительный закон умножения над функциями сложения в Haskell
В настоящее время я прохожу курс для начинающих по хаскелю и лямбда-исчислению, и я не знаю, как выполнить следующее упражнение: Используя следующие определения операций (+) и (*) в haskell, докажите: 1) Закон распределения (*) над (+)...
335 просмотров

Бета-редукция некоторой лямбды
У меня есть следующее лямбда-исчисление, и я хочу знать, как его бета-сокращение. Лямбда это: λxy.xy Я предполагаю, что бета-редукция невозможна, потому что замены нет, а x привязан к телу. Верно ли мое предположение?
83 просмотров
schedule 22.04.2024

Почему мы останавливаемся после достижения этого срока? Лямбда-исчисление
Я вычисляю нормальную форму лямбда-терма. У меня также есть решение, поэтому я знаю, что мои шаги до «конца» были правильными. Данный термин (\a.\b.(\x.a b x)(\y. b y x) a) (\f. f f)g и нормальная форма этого g g (\y. g y x)(\f. f...
39 просмотров
schedule 26.10.2023

Выведите первые n чисел последовательности Фибоначчи в одно выражение
Итак, в последнее время я немного возился с Python и пытаюсь найти способ вывести n-е число последовательности Фибоначчи в одном выражении. Это код, который я написал до сих пор: (lambda f: f if f<2 else (f-1)+(f-2))(n) # n == 1 -> 1 # n ==...
2315 просмотров

как реализовать лямбда-исчисление в OCaml?
В OCaml мне кажется, что "fun" - это оператор привязки. Есть ли в OCaml встроенная замена? Если да, то как это реализовано? это реализовано с использованием индекса де Брейна? Просто хочу узнать, как можно реализовать нетипизированное...
1765 просмотров
schedule 18.06.2023

Цифры Черча в лямбда-исчислении
Мне нужно найти функцию P такую, что (с помощью бета-редукции) P(g, h, i) ->* (h, i, i+1). Мне разрешено использовать функцию-преемник succ. Из википедии я получил succ = λn.λf.λx.f(n f x) Мой ответ P = λx.λy.λz.yz(λz.λf.λu.f(z...
87 просмотров
schedule 01.06.2024

Путаница с типизацией Морте (исчисление конструкций)
В Morte (реализация исчисления конструкций) это выражение хорошо типизировано: $ morte ( λ(Nat : *) -> λ(Zero : Nat) -> Zero ) (∀(a : *) -> (a -> a) -> a -> a) (λ(a : *) -> λ(Succ : a -> a) -> λ(Zero : a) ->...
21 просмотров
schedule 01.10.2022

Правильный способ определения конструкторов лямбда-исчисления
Есть ли четкий способ найти термины в лямбда-исчислении? Например, предположим, что у нас есть конструктор пары pair = λa. λb. λf. f a b и у нас есть конструктор fst fst = λp. p (λa. λb. a) который возвращает первый элемент...
124 просмотров

Реализация последовательности Фибоначчи с использованием чистого лямбда-исчисления и чисел Чёрча в Racket
Я уже довольно давно борюсь с лямбда-исчислением. Есть много ресурсов, которые объясняют, как уменьшить количество вложенных лямбда-выражений, но меньше, чтобы помочь мне в написании моих собственных лямбда-выражений. Я пытаюсь написать...
1907 просмотров
schedule 27.05.2024

Компилятор SystemT и работа с бесконечными типами в Haskell
Я слежу за этой записью в блоге: http://semantic-domain.blogspot.com/2012/12/total-functional-programming-in-partial.html На нем показан небольшой компилятор OCaml для System T (простой полностью функциональный язык) . Весь конвейер...
194 просмотров