If you want to capture the binding and have laziness together you can also
use `bound-fn`.

(binding [*funkybind* true] (map (fn [_] *funkybind*) [0 1]))
;=> (false false)
(binding [*funkybind* true] (map (bound-fn [_] *funkybind*) [0 1]))
;=> (true true)


On Tue, Apr 23, 2013 at 11:52 AM, Travis Vachon <travis.vac...@gmail.com>wrote:

> Hi Daniel
>
> map is creating a lazy seq, which isn't evaluated until the REPL's
> forces it to be printed, which is outside the scope of the binding.
>
> This:
>
> (binding [*funkybind* true]
>   (doall (map (fn [_] *funkybind*) [1 2])))
>
> forces evaluation inside the binding, and does what you want.
>
> This is something I've been bitten by a few times, but the power that
> lazyness brings ends up being worth it, IMHO.
>
> Good luck!
>
> Travis
>
> On Mon, Apr 22, 2013 at 9:41 PM, Daniel Higginbotham
> <nonrecurs...@gmail.com> wrote:
> > I've encountered a situation where the binding function doesn't work as I
> > expect it:
> >
> > user> (def ^:dynamic *funkybind* false)
> >
> > ;; expected
> > user> (binding [*funkybind* true]
> >   *funkybind*)
> > true
> >
> > ;;expected
> > (binding [*funkybind* true]
> >   ((fn [] *funkybind*)))
> > true
> >
> > ;;... huh?
> > (binding [*funkybind* true]
> >   (map (fn [_] *funkybind*) [1 2]))
> > (false false)
> >
> > In the last example, why is the value of *funkybind* false instead of
> true?
> >
> > Thanks!
> > Daniel
> >
> > --
> > --
> > 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
> > Note that posts from new members are moderated - please be patient with
> your
> > first post.
> > To unsubscribe from this group, send email to
> > clojure+unsubscr...@googlegroups.com
> > For more options, visit this group at
> > http://groups.google.com/group/clojure?hl=en
> > ---
> > You received this message because you are subscribed to the Google Groups
> > "Clojure" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to clojure+unsubscr...@googlegroups.com.
> > For more options, visit https://groups.google.com/groups/opt_out.
> >
> >
>
> --
> --
> 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
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to