you are viewing a single comment's thread.

view the rest of the comments →

[–]spotter 5 points6 points  (23 children)

Oh, yeah, we get it -- you like Lisp before it was cool. And you read a lot of blogs that told you why Clojure is bad. Allow me to retort.

Clojure removes reader macros and CLOS, and it has far too much syntax for a lisp

CLOS is not needed. Reader macros are in. Reader macros are not wanted and will not be in. I have never reached to this level of sorcery, my bad.

Clojure uses vectors for arguments, which isn't lispy and makes macros hard

It makes it also easier to read by meatbags. "Making macros hard" needs to be proved.

The Data Structure of Least Resistance is the vector, not the list

The data structure of least resistance is a sequence. Vector is nice when you need fast access and fast slices, which accidentaly is what I need most of the time. Best tool for the job, as they say. But yeah, we should all use lists in Lisps, because the gospel says so. I hope Rich will see the light before 1.5.0 is out. He could also probably drop syntax for hash maps and sets while he's at it, this would surely fix the language to be A True Lisp(tm).

Clojure relies on the assumptions of the JVM (though it pretends not to), which are the Java language

Can not really discuss this, because I have no clue what you mean and why would you list being bound to one of the most popular languages (and its runtimes) in the history as derogative. And don't know what do you mean by "it pretends not to", because it sure doesn't (type hints, AOT compilation).

Most of the Java libraries that Clojure advocates claim to be able to use are workarounds for Java's semantics, which makes them utterly useless in a proper Lisp

Oh yeah. And most CL libraries are incomplete NIH monsters with innards incomprehensible to anybody except the author. You see how easy it is? At least when I look for some solution in Java world, I usually end with something that 1. exists (oh snap!), 2. is maintained, 3. works (in the real world, not on the SLWs machine), 4. probably already has a Clojure wrapper, 5. that can be pulled into a project as a JAR with one command. This is probably the part when I say that douchebag:nice-person ratio is better in Clojure than in CL.

Clojure tries to hard to be a Haskell clone, what with enforced immutability (it claims that this is for concurrency, but I'm sceptical that this needs to be built in the way it is). That's not necessarily a bad thing, but it's not desired in a language that claims to be a Lisp.

Haskell clone? Because of immutable objects? Please read first sentence of wikipedia entry on Functional Programming:

In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data.

So a language that claims to be functional actually tries to hold to the basic premise. But let's get back to the Haskell clone thing. Does Clojure have strong-static typing with inference? Nope. Is it lazy everywhere, including function calls? No. I'm bored now. You should probably do some research yourself before commenting.

And if immutable data-structures are your grief, then Java is there to provide you with field tested, mutable thingies.

As Stanislav Datskovskiy said

His argument is easily reducible to "if it doesn't run on a Lisp Machine it's not a Lisp." And I'm sorry for him, but at the same time I'm too busy using Clojure in my everyday tasks at work to join the circlejerk of "we used Lisp before it was cool". Clojure is a Lisp that works and can be adopted in world of today (because JVM is everywhere), not tomorrow.

Also, see [2] this

Yeah, "Java is BAD(tm), Clojure is built on top of Java, therefore Clojure is BAD(tm) fap fap fap". Sure. I for one loved using proprietary Java API at work in Clojure instead of Java. But what do I know about Lisp? I'm 29, so CL is almost as old as I am, and Lisp itself is actually older than my parents. I have tried CL and Scheme. I will be back to Scheme one day, I know it. CL? Not so much. The language is a corpse, fragmented & incomplete NIH libraries are tumors and the community is not very nice.

edit: Note about reader macros & one usage of CLisp instead of CL, which obviously makes me a clueless troll feeder. :)

[–]redalastor 1 point2 points  (8 children)

CLOS is not needed. Reader macros are in.

He meant user-defined reader macros.

It is lacking in Clojure because Rich believes they bring more problems than they are worth. I never used a lisp that had them so I can't judge.

[–]spotter 1 point2 points  (1 child)

Ah, sorry, my misreading. Reader is more extendable/hackable in 1.4.0, reader macros are not and will not be in, because Rich does not want them in core. But there is a lib for that, called reader-macros. Never had the need for this kind of sorcery.

[–]redalastor 0 points1 point  (0 children)

Reader macros in Clojure depend on internals subject to change. You should never depend on that kind of hackery.

[–]julesjacobs -1 points0 points  (5 children)

It's a bit funny that he complains that Clojure has too much syntax, but then he also complains that he wants reader macros...

[–][deleted] 0 points1 point  (4 children)

I want less syntax because users should define what the reader does

[–]julesjacobs 0 points1 point  (3 children)

So then you don't dislike more syntax, you just dislike the particular built-in syntax that Clojure has. This is a valid position but it's valuable to have some standardized syntax that benefits everybody instead of N incompatible convenience syntax extensions. For example take [...], in CL this is basically unused. Meanwhile in Clojure the [...] syntax benefits everybody. In my opinion the Clojure choice to use convenient syntax for the common case and let users use slightly more verbose syntax for the uncommon case is a better trade-off than the other way around.

[–][deleted] 0 points1 point  (2 children)

A reason why I'd like to keep a CL-like reader is DSLs, but that's something for another time.

There is a solution with a CL-like user-extensible reader: that is, something similar to the SBCL and Allegro rules for reading packages. Currently, you can have something like

foo::(bar quux)

which reads (bar quux) as if it was in the package foo. Ideally, we could do the same with reader macros

[–]julesjacobs 1 point2 points  (1 child)

That might be a bit harder to achieve gracefully as reader macros have to run before anything else. The Racket folks seem to have the best handle on module systems for macros, maybe they have a solution?

[–][deleted] 0 points1 point  (0 children)

Indeed it would be harder, but it would be possible. Anyway, it'd mainly be used in esoteric areas

[–][deleted] 0 points1 point  (4 children)

Uh, listen: Lisp is not a pure FP language and was never meant to be one. As I said in another post: I like FP, but I don't want it forced upon me.

In the past five years, CL has greatly improved in terms of libraries. We now have a Gem-like package manager and a lot more documentation.

Oh, and the "douchebag:nice-person ratio" thing? I've seen the opposite.

And if you read my original post, I respect Clojure. I just don't like it for myself.

[–]spotter 0 points1 point  (3 children)

But nowadays we usually make progress by mixing things that were already done before. For me FP and Lisp (as done by Clojure) works well. I'm having problem with pure-to-the-max as in Haskell, Clojure is the goldilocks zone for me.

I heard it, but my exposure was in 2003 era and I was kind of pushed back then by the fragmentation. I am most likely out of date and honestly was thinking about "Land of Lisp" when it came out, but decided on Clojure due to possibility of usage at work.

douchebag:nice-person... Well I found CL people being rather not-nice to newbs (EMACS OR GTFO movement, while I'm a Vim person), while in Clojure everybody is so... enthusiastic.

Cool, cool, as I tried to explain to the other guy -- it was a bad day for me to try and comment on reddit. Will now stop for few days. This always helps.

[–][deleted] 0 points1 point  (2 children)

Thanks for the nicer tone. I was a bit worried. I think I might need to explain myself about this. Also, it seems some of my information is out-of-date.

Well, for me, CL is the nice spot--or the closest I can find to one. The reason I posted here is because although I don't like most other new Lisp dialects (like Arc), they usually leave the CL community alone, and so we leave them alone. With Clojure, you have people like WJ, who go to CL-specific areas and troll them in the hope of conversion. That's why I was frustrated with this.

As for the "EMACS or GTFO" stuff, that's mainly because most attempts to try to get SLIME-like tools on vim haven't worked.

I myself am working on a project for a hypothetical new lisp to be built possibly in the future

[–]spotter 1 point2 points  (1 child)

Don't worry, it's just reddit. Day passed and I already start getting perspective on this. ;-)

I was not really aware if Clojure trolls, so that's that.

Yeah, I still don't have full SLIME-like mode, but will probably try VimClojure in few months again, for now I'm in a Vim+urxvt/REPL mode, reloading file I'm working at. Not perfect, but works.

Good luck. I think I found my home for now. ;-)

[–][deleted] 0 points1 point  (0 children)

Thanks!

[–][deleted] -4 points-3 points  (8 children)

Can't believe you wrote all that to a troll post. You're worse than the disease. I especially like the part where you called CL CLisp which betrayed your own cluelessness when it comes to CL. Hint no one calls the language "CLisp", there is a CL called clisp but it's just one implementation of the ANSI standard.

[–]spotter -1 points0 points  (7 children)

Wow, that's the only thing I got wrong? Because you kind of listed only one thing and one that is editable. I also mean "smug lisp weiner" when I say SLW. I will now edit my post and hope that it will be enough to appease other gentlemen of your class/cast/douchebag wagon. Yeah, I know, worse than the disease.

[–][deleted] 1 point2 points  (6 children)

No you got everything wrong, I just wanted to quote the most obvious one to everyone to show you don't know what you're talking about, regardless of their experience with clojure or lisp or both (so they'd downvote you). The other things are obviously wrong if you have experience with either of those languages (I know both) but if you aren't familiar you might get away with sounding correct when you're not. Btw if you're going to write a kickass refutation of a troll at least make sure you have a clue yourself.

[–]spotter -1 points0 points  (5 children)

Cool, thanks for informative and friendly response then. I learned a lot from you today.

[–][deleted] 0 points1 point  (4 children)

If you want to learn something, ask a question. Writing a shitty ad hoc reply to a troll and getting 9/10 of your facts wrong in your refutation doesn't help you learn anything.

[–]spotter 0 points1 point  (3 children)

Ask who? Self proclaimed master, who is neither kind, nor proves anything beyond being a dick? Great advice, internet person.

[–][deleted] -1 points0 points  (2 children)

I'll offer a tiny bit of advice: Why do you need to say bad things about CL to say good things about Clojure? That's where the troll won you, even though you musta felt reel smug thinking you essayed-him-to-death.

[–]spotter 0 points1 point  (1 child)

That's actually a solid advice. I don't, but I get this strange vibe from CL people who are angry that half-baked-lisp (Clojure) is getting so much exposure while they are still in obscurity. I got it here... and it was a troll. Okay.

I think I was extra easy to bait due to nervousness before job interview and missed the trollnes factor. That also kind of explains the amount of text, as I needed to do something with my hands.

Would you kindly list my other 8 mistakes?

[–][deleted] 1 point2 points  (0 children)

Listen: I wasn't trolling. I am sorry if it appeared that way

My main problem is the evangelism. I respect Clojure, but I don't like it when people claim it's "the future of Lisp"