Peter, I share your frustration, or at least I did at one point. If you dig back about 6 years in this mailing list you will find an epic rant by me about OpenGL and Clojure. Looking back on what I thought at that time, I'll mention as perhaps they can help you not make the mistakes I did.
1) Be as specific as possible. If I say "clojure sucks because I can get a nil anywhere", isn't that helpful to anyone. But if I say "here's some code that stumped me, what am I doing wrong, how can I get better", people can chime in with a direct example, and a direct solution. 2) It's hard, but stick with one problem per email thread. Too often I see lists (and yes I've written them myself) that go on a tirade of "everything that's wrong with X". The problem is that mailing lists are very poor mediums for having multithreaded conversations. So some questions will get lost or emphasized, to the determent of other questions. So to use your email as an example, it would be awesome to see a email thread about "defrecord reloading", one about "empty? and ints" and another about datomic's log function. They all have different answers and it's hard to answer them all at once. 3) Many things in Clojure seem random until you understand the reasoning behind them. I hate telling people to go read the Clojure source, but I'll say the more of it you read the more you will understand. Very few things in Clojure are done without a reason, and some things that seem like bugs may actually just be a misunderstanding of the basic concepts of the language. I once had a co-worker (who used Ruby a lot) say, "why does Python suck so much?". After a conversation with him we both kindof realized it's not that Ruby rocks and Python sucks, its simply a different set of tradeoffs and optimizations that make each language unique. The same is true for Clojure. Learning what those tradeoffs is, is very important. 4) Don't give up! I played with Clojure for about 2 years before becoming comfortable with it. Don't be like me and throw it away every few months in anger. Keep at it, please keep asking questions, and do so before you reach the point of frustration. I've worked with more languages than I can remember, but Clojure is the only one I've stuck with this long, simply because it's that good. Not perfect, but more perfect (imo) than any other language I've used. Hope this helps, Timothy On Sat, Jul 23, 2016 at 8:17 AM, Colin Yates <colin.ya...@gmail.com> wrote: > Abstractions and dynamic/static typing are orthogonal. Static/dynamic > is simply _when_ types are considered. Strong/weak typing is arguably > more relevant and is about how narrowly type information is > considered. > > I can't find an actual declaration but I consider Clojure is dynamic > but strongly typed. Some dynamically typed languages tend to be more > forgiving when asking questions and will guess at what you are asking > regardless of whether they are statically or dynamically typed, so > Ruby (sort of strongly typed) and JavaScript (weakly typed) have no > problem with asking if an Integer is empty. > > Wow, that reads like I am lecturing down to somebody - apologies, that > isn't my intent. Half of the problem is that like 'Functional > Programming' there isn't really an authoritative definition of > 'strongly typed' or 'weakly typed' :-). > > On 23 July 2016 at 14:15, 'Adrian A.' via Clojure > <clojure@googlegroups.com> wrote: > > > > > >> The point is that an 'Integer' > >> (abstraction) has no sense of 'emptiness' or 'fullness'. > >> > > IMHO that might be true for a statically typed language, but in the case > of > > a dynamic language like Clojure it makes perfect sense, and most users > > expect > > this behavior. > > > > -- > > 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. > -- “One of the main causes of the fall of the Roman Empire was that–lacking zero–they had no way to indicate successful termination of their C programs.” (Robert Firth) -- 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.