Je suis confus au sujet de quelque chose. Je voulais générer un exemple (dans Clojure) démontrant comment un combinateur de points fixes pourrait être utilisé pour évaluer le point fixe d'une séquence qui converge mathématiquement après un nombre infini d'applications mais qui, en fait, convergerait après un nombre fini d'étapes dues à la précision finie des points flottants. Il me manque apparemment quelque chose ici.Utilisation du combinateur de points fixes? Pourquoi un débordement de pile ici?
(defn Y [r]
((fn [f] (f f))
(fn [f]
(r (fn [x] ((f f) x))))))
(defn simple-convergent [func]
(fn [x]
(if (zero? x)
0.0
(* 0.5 (func x)))))
Je peux alors obtenir
user=> ((Y simple-convergent) 0.)
0.0
user=> ((Y simple-convergent) 0.2)
java.lang.StackOverflowError (NO_SOURCE_FILE:0)
Je ne comprends pas ce débordement de pile. Plus généralement, en relation avec mon article précédent, je me demande si quelqu'un peut présenter une version "correcte" d'un combinateur de points fixes qui peut être utilisé pour approximer des points fixes de séquences de cette manière.
La dernière ligne devrait-elle être '(func (* 0.5 x))'? On dirait que c'est récurrent avec le même x pour toujours. –