News for hackers. Stuff that matters.
Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by hardwaresofton on Sunday January 06, 2019 @08:38PM (#18842078)
Outside of applying the research of persistent immutable data structures (which I think is from the Okasaki paper[0]), I think the most innovative part of Clojure is the fact that it's actually used -- they've managed to build a community and ecosystem with high quality packages and buzz around lisp.

I don't pick Common Lisp/Scheme/Racket despite desperately wanting to because IMO Haskell has a better package ecosystem in my eyes, which is saying a lot. For example, try and find a HTTP server (by far the most common usecase for new projects IMO) that is both multi threaded and async IO capable (i.e. maximally using every core) -- it's surprisingly difficult, I found decent seeming libraries that did either-or, with varying levels of polish and paradigms involved.

I personally prefer CL to Clojure but I just can't imagine trying to convince an enterprise to use Common Lisp these days especially since I can't even really convince myself... Clojure would have the same problem but the ecosystem + buzz is the differentiator in my mind.

[0]: https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by nickik on Monday January 07, 2019 @05:05AM (#18844051)
The persistent datastructure that clojure used are actually Rich own invention, building on Okasaki and Phil Bagwells.

Phil Bagwells then started working in that direction also, see:

https://www.youtube.com/watch?v=K2NYwP90bNs

Some of Clojure data structure are pretty much from Okasaki, but Vector or HashMap.

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by fulafel on Wednesday January 09, 2019 @12:38AM (#18862563)
There's a talk from Bodil Stokke where she explains (w background) and live-codes the core of Clojure's HashMap algorithm, in TypeScript: https://youtu.be/cUx2b_FO8EQ

Indeed there's novel stuff there.

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by weavie on Monday January 07, 2019 @04:20AM (#18843882)
You should also read Phil Bagwells paper on Ideal Hash Trees. I believe they were also highly influential.

http://lampwww.epfl.ch/papers/idealhashtrees.pdf

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by kccqzy on Sunday January 06, 2019 @11:07PM (#18842705)
By the way Okasaki not just has a paper, but a whole book on that topic. It has code examples in ML and Haskell. It's really nice if you want to learn to design persistent data structures.
Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by hardwaresofton on Sunday January 06, 2019 @11:56PM (#18842875)
I just double checked and I think the link I posted is to the book -- I thought it was just one of the papers but that PDF is the actual 160 page book that was his thesis.

Unless I'm misunderstanding, and book != thesis.

[EDIT] - Looking through the Amazon listing, it looks the book is certainly not just a republish of the thesis... Looks like I have even more reading to do

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by bcherny on Sunday January 06, 2019 @11:38PM (#18842790)
+1 Okasaki’s book is a great reference. I’ve personally given out a few as gifts.

https://smile.amazon.com/Purely-Functional-Data-Structures-O...

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by vindarel on Tuesday January 08, 2019 @06:54PM (#18861008)
An async http server ? What about Woo and Wookie ? https://github.com/orthecreedence/wookie seen on https://github.com/CodyReichert/awesome-cl#network-and-inter...

also for reference some companies keep betting on CL today: https://github.com/azzamsa/awesome-lisp-companies (and I suppose that's just the emerging iceberg)

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by hardwaresofton on Tuesday January 08, 2019 @09:56PM (#18861899)
> An async http server ? What about Woo and Wookie ? https://github.com/orthecreedence/wookie

Wookie is one of those that does either-or -- the main competency is async io, and it offers multi-threaded perf with some plumbing (see the Threading guide[0]).

I don't mean to put down the libraries out there (lack/clack, hutchentoot, wookie, woo, ningle, etc), but for languages that aren't single-core-by-design/circumstance (i.e. node, python, ruby), I don't expect it to be this difficult to find a library that handles both multi-threaded operation and asyncio at the same time, abstracted cleanly so users don't have to think about it or add plumbing.

Performant web servers that take advantage of what your language is good at is table stakes these days, if things like this are not standardized/obvious choices at this point it tells me that I won't be able to find other things down the line. It's a circular problem though, someone has to build all the libraries that I'm expecting to find, and it could be me -- I just don't want to join the ranks of those committed to the CL ecosystem, right now at least.

> for reference some companies keep betting on CL today: https://github.com/azzamsa/awesome-lisp-companies (and I suppose that's just the emerging iceberg)

I didn't say that companies don't bet on CL, I just personally couldn't imagine recommending it to anyone as the language to do a new project/startup/whatever in. Lisp has value, but for me that value is much more slanted to the way of thinking than for practical usecases, even more than Haskell which is weird.

[0]: http://wookie.lyonbros.com/docs/threading

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by bad_user on Monday January 07, 2019 @02:54AM (#18843543)
>> “I think the most innovative part of Clojure is the fact that it's actually used”

Popularity is not “innovative”.

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by hardwaresofton on Monday January 07, 2019 @04:22AM (#18843885)
IMO it depends on the lens through which you're looking. If "Clojure" in that sentence to you means the language and the features, then no, popularity is clearly not an innovative feature and is basically orthogonal. It obviously doesn't matter how popular the language is if what we're talking about is whether it supports <language feature x>.

However, if "Clojure" in that sentence is interpreted in a wider, more general and necessarily less concrete sense -- to represent the language, ecosystem, branding, etc -- good marketing/advertising, community management, and general operations-level can be rife with places to innovate.

An excellent language that never gets adopted has effectively zero value IMHO until it's corpse is ransacked by a language that does get adopted. People rediscover things that older languages have done all the while almost every week it seems -- creating a language and the requisite community to actually drive adoption can be considered innovative if the rest of the rest of the landscape is sufficiently similar. Clearly the Clojure project is doing something differently from the Common Lisp/Scheme/Racket crowd.

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by kbp on Monday January 07, 2019 @09:30AM (#18845343)
It's too early to say. Clojure's still very young in Lisp terms, so it's natural that it has more hype around it now than languages that were cool 30 years ago. It's also not exactly taking over the world, and I think you're forgetting the buzz Lisp had in the 80s. It will be an innovation in the sense you mean if it has wide adoption and hype in 2050, but it's certainly not anything unprecedented yet.
Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by hevi_jos on Monday January 07, 2019 @04:20AM (#18843883)
IMHO It is.

It is like Windows. When it appeared it was significantly inferior to Unix options, but it made a hundred or a thousand times more people to experience computers.

If a 1 to 10 percent of people is naturally innovative and creative, then the platform with most users ends innovating way more.

Lisp use at first was restricted only to Academics, it was so inefficient that you even required a very special(and expensive) purpose computer to run it. Those academics were not paying the machine with their paycheck so they didn't care.

More affordable solutions like c became popular and forced Lisp to improve(creating compilation pathways and so on), when it was obvious everyone was using the c toolchain(c++, objc, java).

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by lispm on Monday January 07, 2019 @05:38AM (#18844188)
> Lisp use at first was restricted only to Academics

Lisp was spreading in the 60s to everyone who had a mainframe or mini computer. In the 70s first applications were built and companies like BBN, Xerox, IBM started to use Lisp. In the 80s Common Lisp was standardized upon a DARPA initiative to have a single Lisp language for the applications they were prototyping or deploying in the military. The military got huge applications for battle management, battle simulation&training (like SIMNET), planning, design & construction developed by contractors.

> it was so inefficient that you even required a very special(and expensive) purpose computer to run it

Lisp developers required a personal workstation and thus they co-invented them in the 70s. Machines with 1 Megabyte or more RAM for a single user. Machines where one could develop and work with programs like Macsyma, an early computer algebra system widely used in maths and physics.

> creating compilation pathways and so on

efficient execution of Lisp on non-special-purpose hardware was available in the 70s for example with Maclisp and in the 80s with Common Lisp.

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by bad_user on Monday January 07, 2019 @07:20AM (#18844599)
Definition of "innovative":

    Characterized by the creation of new ideas or things
Popularity isn't innovation by its definition. These two issues are orthogonal.

>> "It is like Windows ... but it made a hundred or a thousand times more people to experience computers."

Right, but that's completely irrelevant and not innovation.

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by TeMPOraL on Monday January 07, 2019 @07:29AM (#18844644)
"Innovative" is a great example of an aircraft-carrier-clearance word. The way this word is used in e.g. startup context, popularity can absolutely be innovative - after all, if Lisps were not popular, and now one suddenly is, it's a new thing therefore innovative (send funding rounds this way please).

Honestly, I think the word "innovation" needs to be tabooed from the discussion to get meaningful questions and answers.

Re:How innovative is Clojure as a Lisp dialect from Lisp exp... by levosmetalo on Monday January 07, 2019 @04:09AM (#18843836)
>>> “I think the most innovative part of Clojure is the fact that it's actually used”

> Popularity is not “innovative”.

But the way to reach popularity is innovative, at least for a lisp.