world traduccion programacion lenguaje learn language hello compiler common functional-programming lisp computer-science

functional programming - traduccion - ¿Cómo funciona Jan Willem Klop "(LL L...)" Y combinador?



lisp traduccion (1)

Entiendo lo que es un Y Combinator , pero no entiendo este ejemplo de un combinador "novedoso", de la página de Wikipedia :

Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L) Where: L = λabcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r))

¿Como funciona esto?


La esencia de un combinador de punto fijo C es que C f reduce a f (C f) . No importa lo que tome para C , siempre y cuando lo haga. Entonces, en lugar de

(/y f. f (y y f)) (/y f. f (y y f))

también puedes tomar

(/y z f. f (y y y f)) (/y z f. f (y y y f)) (/y z f. f (y y y f))

Básicamente, necesitas algo de la forma

C t1 t2 ... tN

donde ti = C para algunos i y

C = /x1 x2 .. xN f. f (xi u1 u2 ... xi ... u(N-1) f)

Los otros términos tj y uj no son realmente "usados". Puedes ver que el L de Klop tiene esta forma (aunque usa el hecho de que todos los ti son L manera que el segundo xi también puede ser cualquier otro xj ).