Fork me on GitHub

"Abstraction, Abstraction, Abstraction... thats how you win a turing award...."

👍 4
Alex Miller (Clojure team)01:09:10

@denisgrebennicov @seancorfield the real answer re 1.11 is no decisions have been made yet. Spec work is primary right now and certainly parts of that may end up bleeding into the language itself (like fn specs). Anything in jira is unreviewed by rich and speculative


thanks @seancorfield -- the view of possibilties was interesting for sure. also hadn't see this nice section: 🙂


@sogaiu I'm looking forward to Spec 2 going non-alpha -- and becoming the "standard" way to do specs.


The alias ticket is also something I've wanted for a few releases -- but I have a reasonable workaround that we use at work.


Clojure doesn't need much extra functionality at this point. The slow, steady evolution is fine. We've had every pre-release build in production since 1.3 Alpha 7 or 8 so that stability is important.


was interested in the var tag one: -- but i see it only seems to be for "bind to same-named var on reading side (a la var serialization support)."


am also very much looking forward to non-alpha specs, but as it seems to be in newer territory can understand that coming up with something satisfactory could take time


We've kept a branch up-to-date at work with Spec 2. It's interesting because Spec 1 was so good and so useful (for us, in production) but Spec 2 addresses a lot of the shortcomings and is even better.


It will definitely save us some duplication and "hacking".


Hi, folks, I want to know what is the use case for clojure.core/bound-fn function? I can't understand it well after reading the doc.


It carries thread locals with it


So if you use binding, then the values will still be bound inside the function as they were before.


Ohh, understand (binding [] (bound-fn [] ...))


thank you!


@doglooksgood the difference really is when you run that function on a different thread. I see it pretty similar to binding-conveyor-fn (which is private) used in the following example:

;; this will print "*a* is nil"
  (binding [*a* 2]
    (doto (Thread. #(println "*a* is " *a*)) .start .join))

  ;; HOWEVER, using binding-conveyor-fn we can make it work
  ;; this will print "*a* is 2"
  	(binding [*a* 2]
      (doto (Thread. (#'clojure.core/binding-conveyor-fn  #(println "*a* is " *a*))) .start .join)))


And if look at future you can see that is propagates bindings automatically for you:


What I don't really get is if there's a significant difference between bound-fn and binding-conveyor-fn. Btw. this is perfectly valid discussion for #clojure - nothing off-topic.


someone asked about one of my tools to be used in eshell, but stdin behaves weird. This is a small repro:

echo "1\n" | clojure -e '(str "x" (read-line) "x")'
This works in bash, but not in eshell. No clue why.


Eshell is not much of a shell


alright, then it's probably a "won't fix"