> Previously, elisp package authors would try to make their code self-contained.
And I fervently hope that does not change. Moving Emacs to the world of Gems/Bundler or Maven, where every package depends on two dozen half-assed libraries (each of which transitively use at least two dozen more), and where everything breaks all the time because someone decided to "upgrade" to the JSON parser in vogue this week, hardly strikes me as an improvement.
In ubuntu, when using the packaged clisp and asdf (installable via apt-get), i'm unable to install quicklisp without some hacking around (it complains about the asdf version).
Ok, I never use the host os package manager for certain key things, including Lisp, Ruby. For Lisp, i get from the SBCL site or the proper site (SBCL, Clisp, Clozure CL) I am using. And i compile the source each time. (Obviously to bootstrap you gotta pull the binary the first time). After that, everything is a piece of cake.
I have done less with ruby lately, but as I recall the only way to survive was to use RVM or apparently now chruby to get everythin and compile it up.
> For Lisp, i get from the SBCL site or the proper site (SBCL, Clisp, Clozure CL) I am using
I'll try that approach. Never really tried SBCL or Clozure CL.
> And i compile the source each time
You mean that you compile, for instance, Clisp? I tried to do it once, because FFI usage is dependent of a the flag --with-dynamic-ffi being set in the ./configure step [1][2]. I don't remember exactly why, but I got some difficulties in the build process, but I managed to do it.
This may be a little out of scope, but does anybody know about a common lisp implementation that is more FFI-friendly?
I heard that clang is now the default C compiler on OS X? clisp can't be built reliably with clang on x86_64 (clisp people on irc thought it was likely a bug in clang).
sbcl doesn't rely on the C compiler so you should have no problems building it on mac OS. Clozure CL was originally a CL specifically for the mac, so it definitely should work fine. SBCL seems to be the most popular open-source implementation, as it can generate extremely good code, often with just minimal type annotations.
On Debian (and possibly Ubuntu) one can get the SBCL package from unstable (it doesn't depend on much) and go from there if installing from source is too much of a hassle.
Don't install any other Common Lisp stuff SBCL doesn't depend on from the Debian repository though, except maybe ASDF. Get everything else through Quicklisp.
How long did it take CPAN to get that way? And I still prefer my native OS to handle packages better than some random developers; that's one of the big reasons I chose it (Debian, for the record). Good developers aren't always good sysadmins. Add to that NIH syndrome, and you get things like Gems.
I can understand cross-platform stability and one-button ease of use, but quite frankly, I've already got one-button ease of use (apt-get), and I long ago gave up on proprietary software that doesn't meet my needs (handling packages properly being one of them).
As for Emacs packages that haven't been packaged for my distro yet, the Emacs library itself is huge (hell, org-mode is now standard!), so if a package needs more than a repository checkout, add to load-path and require to get started, I'm going to have to question its quality.
And as a Debian user you know and use dh-make-perl when you need to, right? And it does the job with no troubles usually, right? And this is possible exactly because CPAN is the CPAN, not an half-baked bunch of packages that called "it like a CPAN for <language name>" too often.
Emacs itself (as in the distribution) is extremely conservative. It's probably for the best it stay that way, precisely because it's so simple to hack on the software.
I don't think you need 'cl for dolist†. Unfortunately elisp doesn't have TCO, so what you would normally do with recursion in other lisps you have to do with loops in Emacs lisp.
Enumerate the keys, please. Oh, no primitives? Well, you can just use maphash. But wait: maphash doesn't return values. So you need your k/v function to modify some state somewhere.
And I fervently hope that does not change. Moving Emacs to the world of Gems/Bundler or Maven, where every package depends on two dozen half-assed libraries (each of which transitively use at least two dozen more), and where everything breaks all the time because someone decided to "upgrade" to the JSON parser in vogue this week, hardly strikes me as an improvement.