Note that there are some explanatory texts on larger screens.

plurals
  1. USjbm
    primarykey
    data
    text
    plurals
    1. This table or related slice is empty.
    1. CO@NathanDavis, I'm not sure if that's correct (that `take-while` isn't "really" recursive). Clojure uses [locals clearning](http://clojure.org/lazy) to keep from blowing the stack, but it's still a recursive process. And if you prevent the locals clearing from working (e.g. by doing what's called "holding onto your head") you will indeed blow the stack. Put another way, `lazy-seq` makes it lazy and adds some related magic but doesn't change that it's recursive.
      singulars
    2. COWell, [Reduced](https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Reduced.java) doesn't seem any more reference-y than `Box`, but I agree that de-referencing applies a reference. (The reason I thought of `IDeref` to begin with is that boxing a value adds a level of indirection *vaguely* similar to e.g. a `Var`). In a plain-English sense a `Box` is a reference to a value and its metadata, despite not having the state/identity features of Clojure's reference types. (And now I'm going to stop spamming your question and go to bed :)
      singulars
    3. COYeah, I get namespacing, but sometimes it's still convenient to avoid common `clojure.core` names unless there's a reasonably strong reason why that's the "right" name. `val` is nice and short, but if everyone uses `b/val` or `box/val` then maybe `value` would actually be more convenient (and no less meaningful). Clearly there's no right answer here, I was just offering my $0.02.
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload