Prawie 2 identyczne programy do generowania nieskończonej liczby leniwych randoms. Pierwsza nie ulega awarii. Druga awaria z wyjątkiem OutOfMemoryError. Czemu?Clojure: leniwa magia
;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))
Ale po awarii dość szybko:
;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)
Jestem również początkującym, ale twoje wyjaśnienie wygląda bardzo poprawnie. Odpowiedziałbym na to samo, gdybyś mnie nie pobił! A 6 przegranych jest zgodnych z tobą. –
Kiedy zacząłem robić problemy z projektem Eulera w Clojure jakiś czas temu, moje wydruki debugowania na nieskończonych, leniwych sekwencjach spowolniły moje programy ... w nieskończoność. Nieskończone, leniwe sekwencje są ważną koncepcją Clojure, z którą można się uporać. –
BTW, jak to się stało, że nie ma StackOverflow. Istnieje nieskończona rekursja w inf-rand – GabiMe