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?

¿Fue útil?

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)))))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top