4 ms·
The packaging story in common lisp is.... Not great. It's hamstrung by archaic naming conventions that confuse newcomers. What CL calls a system is roughly an
by stackghost 10mo ago
The packaging story in common lisp is.... Not great.
It's hamstrung by archaic naming conventions that confuse newcomers. What CL calls a system is roughly analogous to what most other languages call a package. What CL calls a package is what other languages call a namespace.
Despite all that it's a pretty good language if you can find libraries for what you need. The de facto standard implementation (sbcl) has a very good compiler and an acceptable GC. The language itself is expressive and it makes for very quick and pleasant DX. I love writing common lisp.
- skydhash 10mo agoIs it archaic? A lisp program is a dynamic image. A collection of symbol is very aptly named a package. And third party module can be named as a system (collection of packages).
- brabel 10mo agoAgreed, and I think package as used by Common Lisp and Java is more common than “namespace” which the parent commenter believes is the modern word for that!
- tmtvl 10mo ago> * What CL calls a system is roughly analogous to what most other languages call a package.* Or a crate, or an artifact, or a module, or a gem, and there's probably other variations I can't remember off-hand. > * What CL calls a package is what other languages call a namespace.* Or a module, or a package, or... actually, I don't know what Perl or Ruby call it. I believe C calls it a header, but that's not quite the same thing as a package. Turns out naming things is difficult (as well as cache invalidation, off-by-one errors concurrency, and).
- mtdewcmu 10mo agoRacket has packages (1) that work quite well. Chicken Scheme has Eggs. (1) https://docs.racket-lang.org/pkg/index.html https://docs.racket-lang.org/pkg/index.html
- tmtvl 10mo agoEggs? Goodness. And I believe Chicken is R5RS as well, so I don't know what they call libraries/modules/packages/whatever (in R6RS and R7RS they're called libraries, but R5RS didn't specify anything). I expect Racket to call them libraries considering the Racket/R6RS connections.