I was noticing that a lazy list seems to get forced as soon as you create it on the Repl because printing it forces evaluation. (range 1 100), for example, produces:
(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99) Coming from Scala, If you create something like Stream.range(1,100) on Scala's Repl, you'll get something back along the lines of: res0: Stream[Int] = Stream(1, ?) The question mark indicates that there is more to the Stream that hasn't yet been calculated. There are some other neat properties of this. It also allows you to see how far a Stream has been forced. Continuing from above: scala> res0.tail.head res1: Int = 2 scala> res0 res2: Stream[Int] = Stream(1, 2, ?) Would Clojure benefit from having (repl-print) or (lazy-print) function that would not force lazy lists? It could be activated by default when on the Repl. Cheers, Rick --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---