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