I also do not think that this is a bad thing. First, I don't see the many implementations of lisp as a "mistake". They are all bound together by the language standard, which is good enough for compatibility, meaning that most of the time you won't need to use implementation specific features. And even if you do need, there are libraries to help you out (check out threads in lisp). So, 99% of the time, it doesn't matter what implementation you use. And this is a good thing, because you have a choice.
This is not true for scheme where the standard is small, and each implementation is forced to define it's own thing in many areas. But that's on purpose since scheme has other goals. Clojure is a different story. Clojure is designed to be a hosted language. It's meant to live on an existing platform, which in other words means that it tries to be as close as possible to its ideal, but it will obey the constraints of the platform where required (e.g. multimethods vs protocols: protocols are preferred because they are fast on the JVM). The fact that there are many clojure implementation is a good thing. It means you can choose to use the language no matter on what platform you are. The fact that they are incompatible is on purpose, because clojure considers that efficient implementation and easy access to the platform is more important than keeping a standard around. As a consequence you will never be able to take a ClojureJVM code and compile it on the CLR without modifications. There is one aspect that could be considered as negative: ClojureJVM was the first and is the main implementation, while all others try to be as close to it as possible. This means that you are likely to end up having constructs which are idiomatic to the jvm in the other implementation, where they might not make much sense. We could argue whether that really happened and what would it's impact be, but the fact remains that there is no standard, and the implementation is free to introduce an incompatibility, should it consider that it's worth the effort. duminică, 2 iunie 2013, 13:16:25 UTC+3, Michael Klishin a scris: > > 2013/6/2 Zed Becker <zed.b...@gmail.com <javascript:>> > >> Common lisp also commited the same mistake back in the past > > > I'm not convinced it is a mistake. > > There are only 3 implementations that are actually used in production > and feature complete: Clojure, ClojureScript, ClojureCLR. They are > largely developed by the same group of people and try to adhere > to Clojure JVM semantics as closely as possible. > > Compilers that target Python, Lua, Ruby, C are nothing more than > experiments and breakable toys at this point. > > What specific issues with those 3 implementations you > consider to be real problems that affect production users? > -- > MK > > http://github.com/michaelklishin > http://twitter.com/michaelklishin > -- -- 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/groups/opt_out.