Casi 2 programas idénticos para generar infinitos secesos perezosos de randoms. El primero no falla. El segundo bloqueo con la excepción OutOfMemoryError. ¿Por qué?Clojure: magia floja
;Return infinite lazy sequence of random numbers
(defn inf-rand[] (lazy-seq (cons (rand) (inf-rand))))
;Never returns. Burns the CPU but won't crash and lives forever.
(last (inf-rand))
Pero el siguiente choque con bastante rapidez:
;Return infinite lazy sequence of random numbers
(defn inf-rand[] (lazy-seq (cons (rand) (inf-rand))))
(def r1 (inf-rand))
;Crash with "OutOfMemoryError"
(last r1)
Soy un principiante también, pero su explicación parece muy correcta. ¡Hubiera respondido lo mismo si no me hubieras vencido! Y 6 videntes parecen estar de acuerdo contigo. –
Cuando comencé a hacer problemas con Project Euler en Clojure hace un tiempo, mis depuraciones en infinitas secuencias perezosas ralentizaban mis programas ... infinitamente. Las secuencias perezosas infinitas son un concepto importante de Clojure con el que lidiar. –
Por cierto, ¿cómo es que no hay StackOverflow. Hay una recursión infinita en inf-rand – GabiMe