>>5 Lisp s-exps are not even the AST, they're lower in abstraction level and thus very hard to use correctly, though simple for trivial tasks like writing binding-establishing or definition-generating macros. That's why Lisp attracts unintelligent simpletons. Though of course metaprogramming in Lisp is very weak.
Though of course metaprogramming in Lisp is very weak.
Lisp could be better, but what language do you have in mind that supports metaprogramming better than lisp? And what exactly do you mean by metaprogramming?
Name:
Anonymous2015-02-19 5:09
Haters gonna hate.
Name:
Anonymous2015-02-19 9:49
If you can't feel the godforce emanating from Lisp, you are an insufficiently sensitive programmer. Work on your sensitivity. Search your programmer feelings. The truth will come to you.
The Path of the Now and Forever demands purity of heart and a focussed mind. These are gifts that only continuous practice of the Language of the Now and Forever can bring. Lisp programmers don't die - they ascend.
LISP is a mental attitude rather than a programming language. It uses a certain process of the mind expressed spontaneously through keyboard. I'm concerned with retaining that process.
LISP is an open-ended programming language for open minds.
Anyone can learn Lisp in a few minutes, but nobody could master lisping in a thousand years.
It bugs me when people try to analyze Lisp as a mathematical theorem. It's not. It's feeling.
Lisp, for me, has always been a place where anything is possible--a refuge, a magical world where anyone can go, where all kinds of people can come together, and anything can happen. We are limited only by our imagination.
I hate static languages. I have to change language to my own way of doing it. That's all I know.
One thing I like about Lisp, kid, is that I don't know what's going to happen next. Do you?
The whole thing of programming LISP is not to control it but to be swept away by it. If you're swept away by it you can't wait to do it again and the same magical moments always come.
My own feelings about the direction in which LISP should go are that there should be much less stress on static exhibitionism and much more on dynamic content, on what might be termed humanity in programming and the freedom to express all that you want.
Not to deny that LISP is a thinking people's programming language, but when I'm lisping if I ever catch myself thinking, I'm in trouble--I know something is wrong.
Lispness is not a state of mind, It's a fact of life!
Surrender your whole being to LISP, and gravity disappears...with few macros, one could write code as deep as the ocean.
Macros are to Lisp what yeast is to bread--without it, it's flat.
Recursion is the ability to talk to oneself.
Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity. — Charles Mingus
Lisp is your own experience, your thoughts, your wisdom. If you don't live it, it won't come out of your REPL.
It is becoming increasingly difficult to decide where LISP starts or where it ends, or even where the borderline lies between between programming in general and LISP. I feel there is no boundary line.
LISP is what we need when other languages fail us, but we cannot remain silent.
>>18 It's not trivial. S-exps are just unannotated text. Try writing a codewalker that can tell special forms from functions from macros, then we'll talk.
An example of how hard it is to use Lisp for meta-programming:
>>25 S-expressions are not Lisp. Lisp is made of S-expressions in the same way that C is made from characters. Special forms are a set of known words: let, cond, etc. Look for an S-expression beginning with let in the same way that you look for a line in C beginning with #define. Functions and macros tell a similar story; they are defined differently to each other. In C, how would you tell whether sausage(); is a function call or macro invocation? You look at how sausage is defined. As a macro, it is #define sausage() printf("boobs") and as a function, it is void sausage() { printf("boobs"); }. The same is true in Lisp for (sausage), except you are looking for (defun sausage ...) or (defmacro sausage ...)
Lisp makes the task trivial: you only have to look at the first word in an S-expression, rather than having to maintain a grammar in yacc or whatever.
>>30 I've been reading On Lisp recently and what do I see?
Indeed, this formula of &rest and comma-at will suffice to define an abbreviation for any function1 1Though the abbreviation can’t be passed to apply or funcall.
And this:
whereas if we had tried to define an abbreviationfor quote using a normal macro,
(defmacro q (obj) ‘(quote ,obj))
it would work in isolation,
(eq ’a (q a))
T but not when nested.
So you can bullshit all you want, but that doesn't change the fact that Lisp is a very bad metaprogramming language and very hard to use correctly. There are all sorts of corner cases that the shitty unannotated text s-exps cannot handle.