3 ms·
> 2. The most (largest qty of) available FOSS libs anywhere Quick heads up. The ease of FFI (in Clojure's case with Java) is not unique to Clojure and it isn't
by strlen 16y ago
> 2. The most (largest qty of) available FOSS libs anywhere
Quick heads up. The ease of FFI (in Clojure's case with Java) is not unique to Clojure and it isn't necessarily a great thing. It's also an issue with Common Lisp: as FFI with C is easy, there's less incentive to develop idiomatic libraries for the language. E.g., Common Lisp lacks a standard modern way to network I/O, but it's largely been ignored as larger users of the language e.g., ITA could always build and standardize upon an internal C-based extension.
That being said, Clojure is great for reasons beyond running on the JVM: a unique approach to concurrency, incorporation of ML-family features, first order data structures beyond lists (maps, vectors) and the fact it's a Lisp-1 with a great macro facility. I'd love to see Clojure also go beyond the JVM and onto CLR, Parrot and LLVM.
Interestingly enough the other prominent "next generation Lisp", arc, is also a Lisp-1 with true macros (as opposed to Scheme's hygienic macros).
- prospero 16y agoIt's very common to write an idiomatic wrapper for a useful Java library. Your complaint seems to be that those wrappers won't survive the transition onto another platform. I don't really see why that's a problem. Why target another platform if not for its libraries? If Clojure is exactly the same on the JVM as it is on LLVM, why should it ever leave the JVM?
- mahmud 16y agoCommon Lisp lacks a standard modern way to network I/O http://common-lisp.net/project/usocket/ http://common-lisp.net/project/usocket/
- jgg 16y agoCommon Lisp has no standard way of doing Network I/O. usocket is one of several available socket libraries which don't exist in the ANSI spec.
- mahmud 16y agoIt is a de facto standard. Everyone uses it; just like the Metaobject protocol.
- jgg 16y agoIf the usocket library suddenly disappeared, along with all the current Lisp implementations, there would be no guarantee that someone making a new CL implementation had to implement the library in a way similar to usocket, or even implement a socket library at all. It's the same as saying "everyone uses Emacs to edit Common Lisp, so it's the standard Common Lisp editor".
- mahmud 16y agoWhat is the standard way for network I/O in C, C++, Python, PHP and Ruby? I am not in the business of conjuring up hypothetical situations about the demise of Lisp implementations and libraries; that doomsday scenario of having to recreate civilization from specs is simply not in my contingency plan :-) Never underestimate the power of convention, de facto is the rule, rather than the exception.