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?

È stato utile?

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)))))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top