> I cherrypicked a case where the runtime difference would be tiny

 

I wouldn’t be so sure of that. Adding any additional code to the function call 
logic is going to impact almost every single expression in Clojure and that 
“tiny” difference is going to add up pretty fast.

 

As others have noted, runtime performance is a Big Deal™ for Clojure and that 
means that some things are traded off for that speed.

 

Also, as others have noted, this topic comes up repeatedly, probably a handful 
of times a year in some form or other. After using Clojure in production for 
just over five and a half years now, all I can say is: you get used to the 
error messages and you develop an intuition for what most of them mean. Several 
of the Clojure/core folks have said at various times over the years that 
Clojure is deliberately not optimized for novices, on the grounds that whilst 
everyone starts out as a novice, most of your time spent with Clojure is beyond 
that stage (and an optimization for novices can be a de-optimization for 
everyone else).

 

My pet peeve is that clojure.string is not nil-safe. (str nil) produces “” but 
if you pass nil to pretty much any clojure.string function, you get a NPE 
instead. You might think “Hey, it would only be a tiny difference if 
clojure.string functions accepted nil and treated it as an empty string!” … 
until you create a fork of Clojure with that modification and run some 
benchmarks … J

 

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

 

On 12/5/16, 7:04 PM, "Paul Walker" <clojure@googlegroups.com on behalf of 
p...@pwjw.com> wrote:

 

Yeah I understand that tradeoff. I cherrypicked a case where the runtime 
difference would be tiny but others are harder I’m sure.

 

I guess I will go figure out how spec applies to my project.

 

Thanks as always. This group is so responsive. Appreciated.

 

            - Paul

 

On Dec 5, 2016, at 9:46 PM, James Reeves <ja...@booleanknot.com> wrote:

 

On 6 December 2016 at 01:28, <p...@pwjw.com> wrote:

And the error messages are not good.

 

So I was wondering: Is this a philosophical thing? Or is it an effort thing? 
And if it is an effort thing, is there some sort of plan for what effort to put 
in? And if so, can I help by closing tickets?

 

This is an issue that's been discussed often.

 

The fundamental problem is that in a dynamically typed language, good error 
messages are often at odds with runtime performance. The more checks we add to 
catch specific scenarios, or to provide more descriptive scenarios, the more 
performance tends to be impacted.

 

However, Clojure 1.9.0 may have a solution to that in the form of specs. We can 
turn on specs selectively at development time, so we get the benefit of 
detailed error messages, while in production we can turn them off for 
performance.

 

- James

 

-- 
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 a topic in the Google 
Groups "Clojure" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/clojure/ANKq6XD1nW8/unsubscribe.
To unsubscribe from this group and all its topics, 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.


-- 
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