top | item 40477064

(no title)

bluepoint | 1 year ago

Not a surprise, CL's most marketable advantage is that it is infinitely moldable.

It has the most powerful macro system which enables one to define arbitrary syntax, essentially creating mini languages. So, CL is flexible enough to be able to create many languages without changing its fundamentals, such as those in the article. CL is like clay,not even lego bricks. And while this sounds wonderful and liberating, you end up having to learn many different mini languages for each library you use. I like this idea(l), but I do not have sophisticated enough needs to use it (I wish, feel free to hire me on a common lisp project, anyone), but I can imagine that for most programmers that much flexibility may become a source agony, especially if they need to work with other people's code, essentially having to learn (frequently badly?) designed mini languages.

discuss

order

lispm|1 year ago

On the positive side, one can also study the works of brilliant minds... like the original work on the Common Lisp Object System and its metaobject protocol. It added support for object-oriented programming to Lisp and was originally developed with a prototype implementation, which could be loaded into a running Common Lisp.

https://mitpress.mit.edu/9780262610742/the-art-of-the-metaob...

The toy implementation from the book: https://github.com/binghe/closette

A real implementation, here for SBCL: https://github.com/sbcl/sbcl/tree/master/src/pcl

> CL is like clay,not even lego bricks.

There is also the "Big ball of mud" metaphor, which is attributed to Joel Moses, comparing it to the diamond like structure of APL:

  "Lisp, on the other hand, is a ball of mud.  It looks ugly, but you
   can add stuff to it without changing its character."