Y Combinator nello Schema utilizzando Definire
-
11-10-2019 - |
Domanda
Al fine di imparare ciò che un combinatore-punto fisso è e viene utilizzato per, ho scritto il mio. Ma invece di scrivere con funzioni strettamente anonime, come quella di Wikipedia ad esempio , ho appena usato definisco:
(define combine (lambda (functional)
(functional (lambda args (apply (combine functional) args))))
Ho provato questo con funzionali per fattoriale e Fibonacci, e sembra funzionare. Fa questo incontro la definizione formale di un punto fisso-Combinator?
Soluzione
La risposta è no, perché secondo il blog di cui al precedente risposta , è non ha nemmeno soddisfare la definizione di combinatore , dal momento che 'combinare' è una variabile libera.
Altri suggerimenti
EDIT:. Mentre chessweb o chiunque altro corrobora la sua risposta, considerare temporaneamente la sua risposta corretta e questo uno sbagliato
Sembra che la risposta è sì. A quanto pare sembra esattamente lo stesso combinatore qui , a metà strada in basso nella pagina:
(define Y
(lambda (f)
(f (lambda (x) ((Y f) x)))))