Make Quicklisp libraries available in Common Lisp

It seems that in the current environment, students don’t have the possibility to load any CL library with QL ((ql:system-list) returns nil). It would be nice to make at least a set of common libraries (like CL-PPCRE, Alexandria, Serapeum, trivia, jzon, cxml, maybe even anaphora or bordeaux-threads) available.

Would that significantly impact the size of the Docker image and/or spin up delay?

In my opinion providing a set of external libraries does not help teach the language.

Common Lisp is a wide language. Yes it is missing regular expressions and threading; but it has the depth of loop and format. There is a lot to learn without needing external libraries.

As for implementation contraints: the docker images that run tests do not access to network - so you cannot install anything from QuickLisp unless it was built into the image (such as 5am). The docker image would grow, but likely not by much if we including some external libraries into the running image. Startup time would likely not be greatly affected IMHO.

Is there a specific case (more specific than “it would be nice”) for including some external libraries, that would help students learn Common Lisp the language?

1 Like

I think it makes sense to provide libraries for what you typically never implement yourself. Regular expressions are a quintessential example of that. We have a few exercises that use JSON, if I’m not mistaken, and that’s another typical example (XML too but we may not need it anywhere).

Also, if the goal is to teach the language, if there are a few libraries that have become a de facto standard library, I really think it makes sense too, but that’s less clear cut. (because on the other hand, I think it would be absurd to force students to implement RE for simple exercises on text)

1 Like

I think the bar should be fairly high for a library to included. I can imagine a regular expression library being useful, but I also don’t know if CL has enough alternatives built-in that regexes are rarely the best choice. XML and JSON sound like they won’t be useful really for our purposes.