3 ms·
Almost every language has macros now. Lisp is pointless.
by foobar_ 7y ago
Almost every language has macros now. Lisp is pointless.
- capableweb 7y agoDon't let the name "macro" fool you, Macros in Lisp is completely different than the macros you do in other languages. In other languages, you're basically just outputting source code. In Lisp, since the source code is actually the program, you can program the program. There is a good perspective from a Perl developer about Lisp macros here: http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.html http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.h...
- gus_massa 7y agoIn some languages, like C, you don't have the full power of main language inside the macros. In other languages, you have the whole language inside the macros, but the community and the docs discourage you about writing macros. As a related example, in rust the macros have a ! so it's easy to distinguish macros from function calls. In the lisp family of languages, the idea is that everyone can write macros. Macros are dangerous because they can do weird things, but functions can do weird things too. Functions are more restricted, but until you look at the source code you are not sure that they will not ignore all the arguments, or format your hard disk, or something weird in between. I know more about the internal working of racket. One of the open secrets is that it has a lot of macros that pretend to be function. They behave nicely like function, but under the hood they are macros, mostly to generate more efficient code in the common case. For example functions with keywords, of functions with contracts, or functions like `in-list` that can be used in a `for` to iterate a list. (Other macros are weird and do very complex things, in particular `for` and `match` are implemented as macros inside the language.)