shop3
cl-cookbook
shop3 | cl-cookbook | |
---|---|---|
2 | 51 | |
142 | 895 | |
0.7% | 0.6% | |
6.2 | 8.8 | |
9 days ago | 4 days ago | |
Common Lisp | JavaScript | |
- | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
shop3
-
Some thoughts about raising the profile of Lisp
A lot has gone wrong in terms of achieving high adoption, but specifically about something going wrong with rallying around CL, I don't think anything went wrong. No more are Maclisp, Interlisp, Lisp Machine Lisp, Zetalisp, Franz Lisp, Portable Standard Lisp, Spice Lisp... They were all slain or subsumed by Common Lisp. (You might have seen Franz elsewhere in this thread; rather than continuing it Franz, Inc. just developed Allegro Common Lisp separately. Spice Lisp meanwhile changed to become a CL implementation, became CMUCL, which was later forked into the now most popular implementation SBCL.)
Le Lisp/ISLisp are interesting European competition that didn't fall in line, but I don't ever hear about them, I only know they exist/existed, they might nowadays be effectively dead for all I know. Emacs Lisp is probably the biggest success in not caving to CL. Not big enough to constitute anything "going wrong" though.
I think your perception is wrong in two ways. First is the idea that Scheme and Clojure are somehow "variants" or "dialects" of Lisp. Scheme was never a Lisp dialect, it was instead described as a "Lisp-like". Also notice neither Scheme nor Clojure even have "Lisp" in their name, unlike all those other languages that got eaten by CL. "Lisp" meant something, and "Common Lisp" unified that meaning and I think deserves to be synonymous with "Lisp"; many writers have treated it that way. But Common Lispers are giving up that fight, because it's tiresome but also an understandable confusion not helped by Scheme or Clojure's attempts at capitalizing on some primordial idea about the good name of Lisp or whatever drives them to associate with the term. (#lisp in Freenode used to be only for Common Lisp, now in Libera #lisp is for all Lisp-likes and CL has its own channel.) Anyway, Scheme and Clojure have happily had their own evolution and separate largely incompatible s-expressions. I don't think their continued existence is a flaw against CL any more than another random programming language would be. One aspect of Clojure that might sting a little is that its entire reason for existing was because the author couldn't win political fights about having CL in production instead of the JVM.
The second way I disagree with your perspective is on prevalence. Scheme has had some success in teaching (mostly thanks to SICP) though Common Lisp was/is also used similarly at various places, however I think that's hurt [Common] Lisp more than anything. (Basically CL gets taught like Scheme, and so whether CL or Scheme is used students come away thinking they "know Lisp" without ever really having seen its OOP power, its handling of types, its condition system, its easy-to-define macros, let alone the trivial things like LOOP or SETF that make imperative programming possible and easy. It's like C++ classes that teach it as C-with-classes, but worse.) Scheme has also had success as GNU's official extension language (with Guile, which goes a ways beyond standard Scheme to be useful) and you see Scheme pop up in places like GIMP plugins. Racket is the most successful modern Scheme, but it has gone waaaay beyond standard Scheme and slowly seems to be becoming as large as CL. Real stuff is made with it, not just education stuff, but I'm less familiar with what's going on. It may yet eat CL's lunch.
Clojure of course has been a rising star and has enjoyed a lot of success in real stuff. It's popular, it's fashionable, and in terms of projects-per-second your perception is probably right that it's more widely used than CL right now. Where I would draw disagreement is in total pound-for-pound code that's Out There. CL has the benefit of decades of existence, so for example https://www.ptc.com/en/products/creo/elements-direct has been developed for a long time and is made of several million lines of CL code, and that's just one project. If you only used "active" (i.e. someone executed it over last month) code perhaps there's enough Clojure out there now to be an interesting race though there's no way to really tell; if you allow for all the CL that has been written and is no longer run, I don't think there's any contest, CL has such a rich history. (A random application being Mirai https://en.wikipedia.org/wiki/Mirai_(software) with demo https://www.youtube.com/watch?v=-IRsYGfr4jo -- has there ever been a 3D modeling program written in Clojure? Will there ever be?)
https://github.com/azzamsa/awesome-lisp-companies is an ongoing collection of companies known to be using CL. In terms of "industries", right now quantum computing companies seem particularly drawn to CL. Symbolic math historically also, with Maxima and Axiom being modern still-working/developed code bases. (The latter is a million lines of literate CL.)
But drawing on legacy again rather than last-few-years stuff, an old quote by Kent Pitman seems relevant: "Please don't assume Lisp is only useful for Animation and Graphics, AI, Bioinformatics, B2B and E-Commerce, Data Mining, EDA/Semiconductor applications, Expert Systems, Finance, Intelligent Agents, Knowledge Management, Mechanical CAD, Modeling and Simulation, Natural Language, Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web Authoring just because these are the only things they happened to list." We can of course add more things to the list if that would help, like Mars Rovers or video games, https://news.ycombinator.com/item?id=9510945 has a few more, in recent news I learned about https://www.reddit.com/r/Common_Lisp/comments/osnsgz/intels_... and https://github.com/shop-planner/shop3 was open-sourced in 2019. Lisp is in a lot of places all over the world (it's had quite a legacy in Japan even), but not the most fashionable stuff, so it's also understandable that many people haven't heard about it, realized they're using it, or heard people talking about it.
-
Examples of CALL-WITH-* Style In Macros
here's an example from the shop3 planner which implements the macro's behavior in its expansion, rather than as a call-with- function:
cl-cookbook
-
The Loudest Lisp Program
But after you get past some basic weird stuff, it's a quite wonderful language.
> I can only speak for myself, but I definitely reason about code outside in rather than inside out.
You can indent code to make it much easier to "parse", and use some macros that turn the code inside/out, it's more readable than most other languages.
The CL cookbook is an excellent resource, and this page links to several other excellent resources and books you can read for free online: https://lispcookbook.github.io/cl-cookbook/
The "new docs" also present the documentation in a "modern" looking way (rather than the 90's looks of what you get if you Google around): https://lisp-docs.github.io/cl-language-reference/
About other Lisps...
The Racket Guide is definitely not "bone-dry": https://docs.racket-lang.org/guide/intro.html
It is well written and looks very beautiful to me.
On another Scheme, I find Guile docs also great: https://www.gnu.org/software/guile/manual/html_node/index.ht...
They may be a bit more "dry" but they're to the point and very readable! In fact, I think Lisp languages tend to have great documentation.
-
Gamedev in Lisp. Part 1: ECS and Metalinguistic Abstraction
> the problem with Lisp is that it's sorta bundled with Emacs
What's the problems with Alive, SLT, Slyblime, and Vlime? I mean, I use Emacs, but I was using Emacs before getting into Scheme and CL anyway.
> Every website that teaches Lisp is in ugly HTML+CSS-only style
I dunno, I feel like the Community Spec (<https://cl-community-spec.github.io/pages/index.html>) and the Cookbook (<https://lispcookbook.github.io/cl-cookbook/>) are fine.
> I like the philosophy of (s-exp) but modern lisps have ruined its simplicity for me by introducing additional bracket notations [like this].
Yes, that additional notation is a terrible blight on the perfection that is S-expressions, I wholeheartedly agree.
-
Common Lisp: An Interactive Approach (1992) [pdf]
check out the editor section, there's more than Emacs these days: https://lispcookbook.github.io/cl-cookbook/editor-support.ht...
- https://github.com/CodyReichert/awesome-cl for libraries
- https://www.classcentral.com/report/best-lisp-courses/#ancho...
- a recent overview of the ecosystem: https://lisp-journey.gitlab.io/blog/these-years-in-common-li... (shameless plug, on HN: https://news.ycombinator.com/item?id=34321090)
-
A few newbie questions about lisp
Q4: the Cookbook should get you straight to the point: build a website, web scraper, DB access, reference of data structures… https://lispcookbook.github.io/cl-cookbook/
-
How to Understand and Use Common Lisp
It's a good book!
Modern companions would be:
- the Cookbook: https://lispcookbook.github.io/cl-cookbook/ (check out the editors section: Atom/Pulsar, VSCode, Sublime, Jetbrains, Lem...)
- https://github.com/CodyReichert/awesome-cl to find libraries
Also:
- https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/
- https://news.ycombinator.com/item?id=34321090 2022 in review
-
Peter Norvig – Paradigms of AI Programming Case Studies in Common Lisp
https://leanpub.com/lovinglisp -- this one is great, and the first thing I recommend
https://lispcookbook.github.io/cl-cookbook/ -- also great and up to date
https://awesome-cl.com/ -- for anything else.
-
A new video about image-based development in Common Lisp (please, turn on EN subs)
Little help to boost your videos: https://lispcookbook.github.io/cl-cookbook/ look at the banner. Cheers.
-
Good short documentation for CL functions (etc.) available?
For more beginner-friendly, I suggest P. Siebels Practical Common Lisp or The CL Cookbook. Both of those should be available in Emacs info format! If authors are lurking in here :-)
- Common Lisp and Music Composition
- A much needed cookbook for the Lisp-curious (and learning)
What are some alternatives?
PetriNets-CLIM-Demo - A Simple Petri Net Editor and Simulator written in Common Lisp with CLIM (Common Lisp Interface Manager) GUI
coalton - Coalton is an efficient, statically typed functional programming language that supercharges Common Lisp.
portacle - A portable common lisp development environment
racket - The Racket repository
woo - A fast non-blocking HTTP server on top of libev
roswell - intended to be a launcher for a major lisp environment that just works.
paip-lisp - Lisp code for the textbook "Paradigms of Artificial Intelligence Programming"
awesome-cl - A curated list of awesome Common Lisp frameworks, libraries and other shiny stuff.
awesome-lisp-companies - Awesome Lisp Companies
Pipenv - Python Development Workflow for Humans.
book - The Rust Programming Language
trivial-gamekit - Simple framework for making 2D games