Y Combinator en el Esquema usando Definir
-
11-10-2019 - |
Pregunta
Con el fin de aprender lo que es un combinador de punto fijo es y se utiliza para, escribí mi propia. Pero en lugar de escribirlo con funciones estrictamente anónimos, como Wikipedia ejemplo , sólo se utiliza definir:
(define combine (lambda (functional)
(functional (lambda args (apply (combine functional) args))))
He probado esto con los funcionales para factorial y de Fibonacci, y parece que funciona. ¿Esto cumple con la definición formal de un combinador de punto fijo?
Solución
La respuesta es no, porque de acuerdo a el blog se hace referencia en la respuesta anterior , se ni siquiera cumple con la definición de combinador , ya que 'combinar' es una variable libre.
Otros consejos
EDIT:. Mientras chessweb o cualquier otra persona corrobora su respuesta, considere temporalmente su respuesta correcta y éste mal
Parece que la respuesta es sí. Al parecer, aparece el mismo combinador exacta aquí , a medio camino abajo de la página:
(define Y
(lambda (f)
(f (lambda (x) ((Y f) x)))))