Live data from Hacker News

Lisp: More is less

jameso.be

81–90 of 125 posts

Re: Lisp: More is less

#81
A lot of confusion comes from regarding Clojure as a Lisp (in my opinion, to call Clojure a Lisp is the same fallacy as to call Ruby a Smalltalk) and especially thinking that Clojure is "what a Lisp should be".

On the contrary, beauty of Lisp comes from being accidentally discovered minimal set of unique interweaving features (very few special forms, high order procedures, list structure, to glue code and data together, macros, the way to use Lisp as a meta-language to itself, type-tagging of values, instead of declaring variables, and, the numeric tower, and lexical scooping, as recent addirion).

This set of features is very balanced and good-enough. Adding more "foreign" features actually ruins the balance.

Having "just this" and following the paradigm of layered DSLs embedded in a Lisp, popularized by SICP, lots of complicated things could be created, including CLOS which is nothing but a DSL (a bunch of macros and procedures).

This notion of what a Lisp is actually helpful to understand not just Clojure but also Haskell, which is, in some sense, also a small kernel based on Lambda Calculus and tons of syntactic sugar.

By adding more and more features without breaking the balance we got Common Lisp, while an attempt to keep the balance produced R5RS.

If we switch the perspective on what Clojure is to the notion of a scripting language for the JVM (a-la Ruby) with sometimes looks like a Lisp and sometimes behaves like a Lisp, but strictly speaking not a Lisp, because the unique balance was ruined by adding stuff, everything, it seems, falls into its places.

Arc is a dialect of Lisp, Clojure is language of its own, but marketed as a "modern dialect of Lisp", which makes no sense.

Re: Lisp: More is less

#82
post #73

Earlier quoted context omitted.

Pet peeve, sorry, but it irritates me that Clojure people act like this guilty-until-proven-innocent policy about macros is somehow original. It has been standard advice for decades. Chapter 8 of On Lisp (1994) is called "When to Use Macros" and its first section is "When Nothing Else Will Do": By default we should use functions: it is inelegant to use a macro where a function would do. We should use macros only when…

Please name a language you use so that whenever you and I disagree I'll be able to cite the "Blub people".

Not sure what your point is? I'd be happy to be wrong here.

Re: Lisp: More is less

#83
post #30

Earlier quoted context omitted.

Google (ITA Software) is not large enough.

If one needs a large organization for a Lisp program, then something is wrong.

Oh I'm not disagreeing with the logic, it's just that our industry moves as a herd, if there aren't large orgs doing it it's hard to justify to manager types.

Manager types barely tolerate literate programmers, let alone someone who can make something that a mouth breathing moron can't understand.

Re: Lisp: More is less

#84
I think the designers of Clojure intend it as a language for experts. In many fields non-experts can make nice progress, but they need to be aware that they may stub their toes. So, pull requests, code reviews, pairing, etc. are available and well established as means for helping people make the transition from beginner to journeyman (person) and beyond. If I know how to walk, but not how to ride a bike, I hardly think others should be denied nice bike routes.

Re: Lisp: More is less

#85
post #33
post #3

This post repeats two memes that float around the programming language space. One is: "it's so powerful that it's bad". The other is: "it's ok, but not for large projects". I don't think I've ever seen any evidence attached to either. (If the OP contains any, I missed it.) But they're the sort of things that sound plausible and have more gravitas than "Here are my current preferences", so they get repeated, and no do…

> This post repeats two memes that float around the programming language space. One is: "it's so powerful that it's bad". Also known as "less is more", which is a well established point in programming, and with a lot of historical examples to showcase it. > The other is: "it's ok, but not for large projects". I don't think I've ever seen any evidence attached to either. Well, were are the sucesfull large projects wri…

>"less is more"

Less what? Do be more precise. I've heard that with regards to complexity – not so much with regards to power.

Re: Lisp: More is less

#86

A lot of confusion comes from regarding Clojure as a Lisp (in my opinion, to call Clojure a Lisp is the same fallacy as to call Ruby a Smalltalk) and especially thinking that Clojure is "what a Lisp should be". On the contrary, beauty of Lisp comes from being accidentally discovered minimal set of unique interweaving features (very few special forms, high order procedures, list structure, to glue code and data togeth…

The difference between Ruby and Smalltalk is clear, but your analogy is lost on me. I consider Clojure a lisp by any common definition. Why do you not?

Re: Lisp: More is less

#87
post #5

Most of the complaints in this article boil down to "macros are too powerful." I think this is the key part of the argument: "A smart programmer is not necessarily an empathetic language designer; they are occupations that require different skillsets. Giving any programmer on your team the ability to arbitrarily extend the compiler can lead to a bevy of strange syntax and hard-to-debug idiosyncrasies." There are at l…

Macros have its major purpose - they are means of creating advanced DSLs. Simple DSLs could be created just out of high-order procedures and list structure, but they will be bounded by the general evaluation rule, that all the arguments would be evaluated before actual procedure application, which is not always what we want.

Macros is the way to add new special forms to a Lisp or a DSL embedded in it. This is why macros are there.

To avoud macros is to restrict oneself from designing a program as layers upon layers of DSLs which is the most powerful paradigm. Just look at that Rtml DSL of ViaWeb system.

Re: Lisp: More is less

#88

A lot of confusion comes from regarding Clojure as a Lisp (in my opinion, to call Clojure a Lisp is the same fallacy as to call Ruby a Smalltalk) and especially thinking that Clojure is "what a Lisp should be". On the contrary, beauty of Lisp comes from being accidentally discovered minimal set of unique interweaving features (very few special forms, high order procedures, list structure, to glue code and data togeth…

The difference between Ruby and Smalltalk is clear, but your analogy is lost on me. I consider Clojure a lisp by any common definition. Why do you not?

Take a look at arc.arc and news.arc - that is why.

Re: Lisp: More is less

#89
post #4

> How can a static analysis tool keep up with a language that’s being arbitrarily extended at runtime? The prospect is daunting. I don't really understand that point. In Racket, for example, programs macro-expand down to a very small set of primitives, such as `let-values` and `lambda`. This makes it easier to do analysis, not harder. For example, this is how something like Typed Racket can support every idiom in unt…

And to drive your point home, Haskell code "expands" into System F. Macros in lisp do the same kind of transformation (AST rewrites), they just get to skip parsing.

I don't think the author understands that these things happen at different times. Especially because they said "at runtime" when macros expand much before that.

On the contrary, something like Rails is what I'd call extending the language arbitrarily at runtime. So the very lack of macros is what motivates shaky transformations at runtime.

Re: Lisp: More is less

#90
post #82

Earlier quoted context omitted.

Please name a language you use so that whenever you and I disagree I'll be able to cite the "Blub people".

Not sure what your point is? I'd be happy to be wrong here.

You paint "Clojure people" - I'm one - with a pretty broad brush. If one of us has said something you disagree with, then please cite it along with your rebuttal.

It is unlikely that you have an informed opinion of "Clojure people" on the basis of a few posts that give you heartburn.

Post reply on HN