7 ms·
Yes, Lisp is a distinct, different culture (think of Aryans versus tribes in ancient India). The difference is as it is between craftsmen (who are artists) and
by dschiptsov 10y ago
Yes, Lisp is a distinct, different culture (think of Aryans versus tribes in ancient India). The difference is as it is between craftsmen (who are artists) and assembly-line workers.
Look, read Gabriel or Graham or early Norvig (his Lisp style and anti-design-patterns essay), not me. There is something behind their insights.
- pka 10y agoYea, understanding macros and writing your own DSLs doesn't make you some sort of aryan ubermensch programming craftsman. Macros really aren't that hard to get, and mostly not necessary when you have more coherent constructs at your disposal.
- sklogic 10y agoYes, macros are not hard to get - they're far simpler than anything else imaginable. No, they are necessary. There is no better way of doing things than macros.
- incepted 10y ago> There is no better way of doing things than macros. We have invented plenty of better ways since Lisp. Much better ones.
- sklogic 10y agoMind naming a single one? I do not believe such a thing exist. Macros are the ultimate solution.
- ldjb 10y agoThere is much that can be done with regular, bog-standard functions. Yes, macros can be useful in certain cases, but it's often more straightforward to use the Lisp language as it comes. As always, it's important to use the right tool for the job.
- sklogic 10y ago> There is much that can be done with regular, bog-standard functions. You cannot implement simple, modular, debuggable, composable DSLs with functions alone. And you cannot tackle complexity without DSLs. > Yes, macros can be useful in certain cases In most cases. Cannot think of anything beyond "Hello, world" that does not deserve a DSL implementation.
- pka 10y agoFree monads would like to have a word with you about simple, modular, debuggable, composable DSLs. On the other hand macros are anything but composable or modular. Debuggable for some far off definition of debuggable, maybe.
- sklogic 10y agoMonadic interpreters? Composable? Are you kidding? It is a joke, not a composability. You cannot take a type system of one DSL, modules from another and only the expressions syntax from a third one and then mix them all together into a new DSL. And, anyway, interpreters. Who in a sane mind can ever consider an interpreter? Also, you obviously do not realise that macro-based DSLs are by far more debuggable than any monadic interpreter would ever be.
- pka 10y agoBefore we continue, post a link to a free monad DSL you have written; I do not intend to waste my time in a discussion with a zealot. (I can send you examples of macros I've had to write, if you desire.)
- sklogic 10y agoWhy would you be interested in my pitiful attempts if even the best examples of the monadic DSLs people keep pointing too are all thoroughly horrible, convoluted and unmaintainable? Likewise, why should I look at your macros if you already admitted that you do not know how to use them? Can you comment constructively about the composability issue without resorting to ad hominem? Do you even understand the idea if the macro-based DSL design methodology? I guess you can have something as horrible as the CL LOOP macro in mind, instead of any properly designed DSLs.
- incepted 10y ago> Mind naming a single one? We no longer need macros to create intuitive DSL's any more.
- sklogic 10y agoThis is not an answer to my question. What are you proposing instead of macros?
- incepted 10y ago> The difference is as it is between craftsmen (who are artists) and assembly-line workers. It's a bit harsh to call Lisp programmers assembly-line workers. I think the language has value and pioneered some language concepts that we find across a lot of languages today, but Lisp is very dated by 21st century standards.