Hacker News new | ask | show | jobs
by phtrivier 11 days ago
- a single, canonical, sanctified toolchain for "all the things that are require but don't matter"

What's the "cargo xxx" of lisp ? It depends. Maybe it's "quicklisp something". Maybe it's "ASDF something". Maybe it's a mixture of three different things and you ask a dumb question on SO that should be in the first page of the manual, and you get 10k views : https://emacs.stackexchange.com/questions/83200/given-a-bran...

I know, you enjoy the power of having options, configuring everything, and shaving your yaks to the bone with macros over macros.

But I suspect you never hear of so many questions about "retro antagonist polymorphic macros over monadic functional arrowd", because people give up at "how do I import a lib to make an http call" ?

- a single, standard and opinionated way to lay your frigging files on your effing disk. "cargo new". And, no, it should NOT require people to create a top level "common-lisp" folder to store all their projects.

- adding and loading deps. Sorry, typing quicklisp:xxxx in every repl session you open is not "cargo add".

- a baked in way to run some sort of unit test suite. Have dozens of options if you want, but what is the "cargo test" ?

Of course all those problems have been solved by various tools somewhere in 1997, so it will sound like an "entitled millennial" comment.

But, soon, the tagline to aim for will be "a lisp for the 100 years of lisp". What's that ?

3 comments

> because people give up at "how do I import a lib to make an http call" ?

Ironically, this is where I gave up on trying to learn Rust. I just wanted to make a HTTP request and the simplest solution was to… download a library with hundreds of dependencies taking up half a gigabyte?

I think OCICL will meet your expectations more readily than Quicklisp. QL does things more the CPAN way (think Gems if you're more into Ruby than Perl).

> a baked in way to run some sort of unit test suite. Have dozens of options if you want, but what is the "cargo test"?

That actually is ASDF, to be more specific:

  (asdf:test-system system &rest keys &key force force-not verbose version &allow-other-keys)
Although if we're honest, the real way to run a test suite in CL is to open the REPL, load your system, and just type something like (run-test-suite).
That actually seems great ! My understanding is that it has to wrap ASDF package, so is there a risk of trying to find a well known lib, but not finding it because the authors refuse to create a ocicl package for some complex political reason (or sheer lazyness ?)
That doesn't seem likely, the packages are part of OCICL, so it's more likely to have the opposite problem: finding some obscure package you want to try out but which isn't in OCICL.
Is cargo really a reason to love rust? I'm not a full-on rustacean but in my limited experience cargo certainly had its flaws and warts like any other build system.

I find it a little puzzling when a language ships the one build system to rule them all. I get that it saves some decision stress but it also is a monoculture. Gradle vs Maven in Java at least puts competitive pressure on each; c/c++ obviously have many options; even Haskell had/has stack vs cabal.