Описание тега y-combinator

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

Функция нерекурсивного списка с Y Combinator

Примечание: это своего рода домашняя работа, а не какая-то - конечная цель - иметь функцию, которая производит набор параметров для набора чисел, передаваемого этой функции в виде списка чисел. Я являюсь рекурсивной версией функции, но теперь мне ну…
2 ответа

Функция рекурсивного лямбда-исчисления

Я хотел бы создать функцию лямбда-исчисления P, что (P x y z) дает ((x y)(x P)(P z)), Я пытался использовать варианты Y-комбинатор / Тьюринга комбинатор, то есть функции вида λg.(g g), так как мне нужно воспроизвести саму функцию, но я не вижу пути …
4 ответа

Y-комбинатор в D?

Я пытаюсь лучше изучить Y-комбинатор (вроде как я это понимаю на Схеме) и внедрить его в D 2.0, и у меня довольно плохо получается: auto fact = delegate(uint delegate(uint) recurse) { return delegate(uint n) { return n > 1 ? n * recurse(n - 1) : …
1 ответ

Я реализовал Y-комбинатор, используя C# динамический, и если я не сделал, что это?

Мой мозг, кажется, находится в мазохистском режиме, поэтому после того, как он утонул в этом, этом и этом, он захотел возиться с каким-то DIY в C#. Я придумал следующее: я не думаю, что это Y-комбинатор, но , похоже, ему удается сделать нерекурсивну…
1 ответ

Реализация Y-комбинатора в javascript и elixir

Я изучал Y Combinator, и я понял, как он работает на бумаге, но я пока не знаю, как его можно реализовать на языке программирования. Согласно этой странице: http://matt.might.net/articles/implementation-of-recursive-fixed-point-y-combinator-in-javas…
12 сен '14 в 08:24
5 ответов

Практический пример Y-Combinator

В последнее время я немного читал о функциональном программировании и пытаюсь использовать Y-Combinator. Я понимаю, что вы можете использовать Y-Combinator для эффективной реализации рекурсии на языке, который не поддерживает рекурсию напрямую. Одна…
15 май '09 в 15:54
1 ответ

Невозможно получить реализацию Y комбинатора работает

Вот код ( также здесь): #lang racket (define poorY ((lambda length (lambda (ls) (cond [(null? ls) 0] [else (add1 ((length length) (cdr ls)))]))) (lambda length (lambda (ls) (cond [(null? ls) 0] [else (add1 ((length length) (cdr ls)))]))))) Когда я з…
4 ответа

Объясните эту реализацию Y комбинатора в Scala?

Это реализация Y-комбинатора в Scala: scala> def Y[T](func: (T => T) => (T => T)): (T => T) = func(Y(func))(_:T) Y: [T](func: (T => T) => (T => T))T => T scala> def fact = Y { | f: (Int => Int) => | n: Int => |…
13 янв '16 в 19:43
0 ответов

Как прочитать вложенную лямбда-функцию?

Чтобы показать вам, насколько "выразительным" является действительно лямбда-исчисление. Выражение ниже вычисляет 10! (десять факторных) с использованием в основном элементов лямбда-исчисления, т.е. идентификаторы один аргумент лямбда вызовы функций …
06 дек '18 в 13:46
4 ответа

Как Y-комбинатор вычисляет фиксированную точку программно?

Мне кажется, я математически понимаю идею Y-комбинатора: он возвращает фиксированную точку данного функционала Fтаким образом f = Y(F) где f удовлетворяет f == F(f), Но я не понимаю, как это происходит с реальной программой вычислений? Давайте возьм…
08 май '16 в 15:39
2 ответа

Little Schemer: напишите функцию, которая поддерживает только списки длиной ≤ 2

В книге "Маленький интриган" мы находим эту функцию, которая поддерживает только списки с длиной, меньшей или равной 1: (((lambda (mk-length) ; A. (mk-length mk-length)) (lambda (mk-length) (lambda (l) (cond ((null? l ) 0) (else (add1 ((mk-length et…
0 ответов

Рекурсивное посещение с помощью Y комбинатора - должно ли оно компилироваться?

Я играл с элегантными (?) Способами написания посетителей для std::variant и я не уверен, что то, что я делаю, является допустимым C++(17), поскольку GCC будет делать именно так, как я намереваюсь, в то время как Clang выдает мне ошибку. Ниже я снач…
1 ответ

Двухслойный комбинатор "Y-style". Это распространено? У этого есть официальное название?

Я изучал, как языки, которые запрещают использование before-def и не имеют изменяемых ячеек (нет set! или же setq) тем не менее может обеспечить рекурсию. Я конечно наткнулся на (знаменитого? Печально известного?) Y комбинатора и друзей, например: h…
3 ответа

Y комбинатор, бесконечные типы и анонимная рекурсия в Haskell

Я пытался решить проблему максимальной суммы подпоследовательности и придумал решение neato msss :: (Ord a, Num a) => [a] -> a msss = f 0 0 f gmax _ [] = gmax f gmax lmax (x:xs) = let g = max (lmax + x) in f (g gmax) (g 0) xs Вы вызываете функ…
2 ответа

(self self) вызов внутри оператора let на строгом языке

В настоящее время я просматриваю эту статью о Y-комбинаторе Майка Ванье.По пути вывода Y-комбинатора этот код: (define (part-factorial self) (lambda (n) (if (= n 0) 1 (* n ((self self) (- n 1)))))) ((part-factorial part-factorial) 5) ==> 120 (def…
21 мар '18 в 11:01
2 ответа

Схема - ряд Фибоначчи с вложенной лямбдой

Вдохновил этот пост. Я пытаюсь реализовать ряд Фибоначчи с вложенной лямбда - (( (lambda (x) (x x)) ;; evaluate x on x ((lambda (fibo-gen)) ;; fibo-gen get another func as arg (lambda (N it second first) (cond ;; here the body of the above func .. (…
1 ответ

Пишем Y комбинатор в машинке / ракетке

Допустим, у меня есть нетипизированная реализация Y-комбинатора в Racket. версия pasterack.org #lang racket (define Y ((λ (f) (f f)) (λ (z) (λ (f) (f (λ (x) (((z z) f) x))))))) (define factorial (Y (λ (recursive-factorial) (λ (x) (if (<= x 0) 1 (…
19 май '15 в 08:53
3 ответа

Определение альтернативного Y комбинатора

В последнее время я провел некоторое время, оборачиваясь вокруг комбинатора Y, и обнаружил, что он обычно определяется (более или менее) следующим образом (это в C#, но язык выбора не важен): public delegate TResult SelfApplicable<TResult>(Sel…
21 янв '11 в 20:51
3 ответа

Рыцари Лямбда-исчисления бесконечности, написанные в виде кода lisp

Рыцари логотипа Lambda Calculus имеют бесконечность, записанную в виде (Y F) = (F (Y F)) этот код лиспов одинаков и тоже представляет бесконечность? (Y (λ (F) (YF)))
19 ответов

Может ли лямбда-функция вызывать себя рекурсивно в Python?

Обычная функция может содержать вызов для себя в своем определении, без проблем. Я не могу понять, как это сделать с помощью лямбда-функции, хотя по той простой причине, что у лямбда-функции нет имени, на которое можно сослаться. Есть ли способ сдел…
26 янв '09 в 22:42