5 ms·
I started learning Common Lisp, but ASDF and Quicklisp threw me off. I couldn't tell if you were supposed to choose one or the other or they were used together.
by mtdewcmu 9mo ago
I started learning Common Lisp, but ASDF and Quicklisp threw me off. I couldn't tell if you were supposed to choose one or the other or they were used together. This might revive my interest in Common Lisp if I get around to reading it. But in the meantime I drifted off to Racket, which is relatively well documented and has extensive libraries and really unique features.
- bilegeek 9mo agoFor anybody who's still confused, the tl;dr is ASDF is the actual package loading mechanism, Quicklisp doubles as an ASDF wrapper and a package manager.
- stackghost 9mo agoThe 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 9mo 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 9mo 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 9mo 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 9mo 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 9mo 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.