I think correctness > performance, at least in a core function that's so widely 
used

I don’t want to speak for Alex or any of the Clojure/core folks but…

The general position taken in Clojure so far could be more accurately 
categorized as Garbage-In-Garbage-Out, in favor of performance. In other words, 
Clojure functions are usually designed for performance on correct data and in 
correct usage situations – and just fail or do something odd/unpleasant when 
used on the wrong data or in the wrong situation.

The solution to “it blows up when I do X” is “don’t do X” rather than making X 
slower for everyone, in order to make X deal “better” with cases it wasn’t 
designed for. It’s why, for example, many things simply blow up with a 
ClassCastException rather than adding conditional checks – and slowing everyone 
down – just to produce a “better” error message.

Sean Corfield -- (970) FOR-SEAN -- (904) 302-SEAN
An Architect's View -- http://corfield.org/

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

From: divya...@helpshift.com
Sent: Friday, September 15, 2017 3:45 AM
To: Clojure
Subject: Re: Has the (left recursive blowing) concat function been fixed?

Hi Alex,
 
No, this didn't move forward. I don't think it was ever actually filed in the 
jira system?

Hmm.
 
 There are lots of ways to avoid this problem (into, transducers, etc) and in 
practice I think most people don't find it to be an actual issue.
 
Well, we did face this issue in production some time back, and it took quite 
some time to figure out what was going wrong.
Reading comments on the linked post on Stu's blog shows that quite a lot of 
other people have also been affected by it.
 
I have not looked closely at the proposed solution, but beyond the basic "does 
it work" question, there are also a lot of questions about performance, etc 
that would be need to be evaluated.

I think correctness > performance, at least in a core function that's so widely 
used (or maybe put a "warning: don't use in eager contexts" in the doc).
Please let me know if I can help in any way.
I'll run tests and some microbenchmarks on this and get back to you.

Thanks,
- Divyansh
-- 
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/d/optout.

-- 
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/d/optout.

Reply via email to