Lisp (1) metaprogramming sucks. I've got a closure. Why can't I know over which variables? Why can't I know which function called foo (ie.: access the stack)? Why can't I know what the fields of my struct are? Even Python knows how to do that one.
I want my macro code, expanded here, to be aware of that other bit of macro code expanded in that other function.
Yeah, there are work-arounds. I've got my own defstruct, my own defun, my own everything. And this morning, I started writing a code walker. With anguish in my heart over a lifetime of debugging the monster that was born today.
Lisp is not an acceptable Lisp, indeed.
(1) That would be Common Lisp and what I know of Scheme. I'll be glad to know there's something better out there.
See, there is this better-than-Lisp language in the sky, that's not made yet, call it sky-lang. I state that every sufficiently complicated Lisp program contains an ad-hoc, half-broken version of sky-lang. I don't want that. I want the real thing.
Every language is "programmable", that's what the Greenspun rule says. Just because Lisp does it better than the others doesn't mean that it's actually close to what can be done.
I think the "Lisp as a (potential) blub" meme is starting to catch on. You're starting to see some people release alternatives that are looking fairly viable. Two that are frequently discussed here are Arc and Clojure. Then there are guys like Mark Tarver, who are working on things like Qi to improve Lisp.
I think it's great to see that after 50 years, "Lisp, the idea" is still growing.
Can you give concrete examples of something useful that's really hard to do without the features you mention that would be much easier if we had those?
By the way I agree that Lisp could be a lot better.
Can you give a concrete example of something useful that's hard to do in Python but would be so much easier in Lisp?
Languages give you a certain amount of expressive power. By stretching the language, you can always reach a bit higher. Python can reach Lisp. It's just damn ugly. Worse Is Better ugly.
Right now, everything that I complained about in the top post, I "fixed". But it's damn ugly. So I don't build anything on top of it. I just use it. If these features were done the Right Way, I'm sure the next abstraction level would be obivious. That's how it always goes.
I would like to add Clojure to the languages discussed.
It add macros and metaprogramming and real functional programming to Java, while keeping the library support and deployability. So, as other programming languages borrow what is good about Lisp, Clojure is a Lisp that has borrowed much of what is good about Java.
I want my macro code, expanded here, to be aware of that other bit of macro code expanded in that other function.
Yeah, there are work-arounds. I've got my own defstruct, my own defun, my own everything. And this morning, I started writing a code walker. With anguish in my heart over a lifetime of debugging the monster that was born today.
Lisp is not an acceptable Lisp, indeed.
(1) That would be Common Lisp and what I know of Scheme. I'll be glad to know there's something better out there.