
The ickref Cohort
Didier Verna
EPITA, LRE
Le Kremlin-Bicêtre, France
didier@lrde.epita.fr
ABSTRACT
e internal architecture of Declt, our reference manual generator
for Common Lisp libraries, is currently evolving towards a three-
stage pipeline in which the information gathered for documentation
purposes is rst reied into a formalized set of object-oriented data
structures. A side-eect of this evolution is the ability to dump that
information for purposes other than documentation. We demon-
strate this ability applied to the complete icklisp ecosystem. e
resulting “cohort” includes more than half a million programmatic
denitions, and can be used to gain insight into the morphology of
Common Lisp soware.
CCS CONCEPTS
• Information systems
→
Information extraction; Presenta-
tion of retrieval results; • Soware and its engineering
→
Soware libraries and repositories.
KEYWORDS
Information Extraction, Soware Analysis, Morphological Statistics
ACM Reference Format:
Didier Verna. 2024. e ickref Cohort. In Proceedings of the 17th European
Lisp Symposium (ELS’24). ACM, New York, NY, USA, 4 pages. https://doi.
org/10.5281/zenodo.10947962
1 INTRODUCTION
Cohort: a group of individuals having a statistical
factor (such as age or class membership) in common in
a demographic study.
– e Meriam-Webster Dictionary
a
, denition 2.b.
a
https://www.merriam-webster.com/dictionary/cohort
1.1 Context
Declt is a reference manual generator for Common Lisp libraries.
e project started in 2010, leading to a rst stable release in 2013 [
2
].
Four years later, the ickref project was born [
1
,
4
–
6
] (at the time,
Declt was at version 2.3 [
3
]). ickref runs Declt over the whole
icklisp
1
repository and oers a website
2
, currently aggregat-
ing more than two thousand reference manuals for Common Lisp
libraries.
1
https://www.quicklisp.org/
2
https://quickref.common-lisp.net
Permission to make digital or hard copies of part or all of this work for personal or
classroom use is granted without fee provided that copies are not made or distributed
for prot or commercial advantage and that copies bear this notice and the full citation
on the rst page. Copyrights for third-party components of this work must be honored.
For all other uses, contact the owner/author(s).
ELS’24, May 6–7 2024, Vienna, Austria
© 2024 Copyright held by the owner/author(s).
ACM ISBN 978-2-9557474-8-3
https://doi.org/10.5281/zenodo.10947962
Declt runs by loading an ASDF system into memory and intro-
specting its contents. Because it is unrealistic to load the complete
set of icklisp libraries into a single Lisp environment, icklisp
runs Declt as a separate process for each library. e unfortunate
consequence is that the information gathered by Declt is not di-
rectly available to the ickref instance. Under those conditions, it
remains easy to build a library index (by sorting the listing of the
generated reference manuals directory), but it is for instance less
straightforward to build an author index, as the author information,
extracted from each ASDF system, needs to survive each and every
Declt run.
Originally, Declt was designed to generate reference manuals
in GNU Texinfo
3
, an intermediate format suitable for soware
documentation, which can in turn be converted into a number
of user-readable ones such as HTML, PDF, etc. Hence its name:
Documentation Extractor from Common Lisp to Texinfo…
Over the years, there has been some pressure to extend Declt’s
rendering capabilities to other output formats (including HTML
without the Texinfo intermediary). is led to an architecture over-
haul, which is ongoing.
1.2 e Declt Pipeline
e goal is to implement Declt as a three-stage pipeline, as depicted
in Figure 1. Declt’s historical entry point, the
declt
function, trig-
gers the whole pipeline, but for a more advanced usage, each stage
of the pipeline is meant to be accessible separately and directly via
its own entry point function.
(1)
e rst stage of the pipeline is called the assessment stage.
At this stage, Declt loads the library and introspects the Lisp
environment in order to extract the pertinent information.
is information is stored in a so-called report.
(2)
e second stage of the pipeline is called the assembly stage.
At this stage, Declt organizes the information provided by a
report in a specic way. e result is called a script. A script
begins to look like a properly organized reference manual,
but is still independent from the nal output format.
(3)
Finally, the third stage of the pipeline is called the typeset-
ting stage. At this stage, Declt renders a script to a le by
typeseing its contents in a specic documentation format.
In 2022, we released version 4.0b1 of Declt, marking the achieve-
ment of stage 1 of the pipeline [
7
]. Declt now provides a function
called
assess
, which takes an ASDF system name as argument,
loads the corresponding library, introspects it, and creates the re-
port. e rest of the pipeline, which is not yet implemented, is
wrapped in a temporary function called
declt-1
, going directly
from a report to a Texinfo le.
3
https://www.gnu.org/software/texinfo/