Scheme index catalogs definitions of procedures, macros, values from scheme specifications and SRFI libraries, using sexpr textual format. Main points of interests is the types
folder.
This repository also provides complementary static site GUI. It’s accessible at https://index.scheme.org .
Identifiers definitions are grouped into files (one file for each library) under types/*.scm
, and a single root index file which defines names and paths to those files types/index.scm
.
Index file is a list of pairs - where car
is a symbolic library name, and cdr
is associated information regarding definitions to load from. cdr
may be an alist, with following fields:
-
'file
- path from where to load definitions. -
'exclude
- a list of definitions to ignore from the file.
Alternatively, cdr
might be a string, in which case it’s treated as a file path.
(
((scheme base) . "types/scheme.base.scm")
((scheme r5rs) . ((file . "types/r5rs.scm")
(exclude . (transcript-on transcript-off))))
)
Each library definition file is a list of entries, where each entry is an association list, using symbols as keys. Each entry either describes a group of identifiers, or a single identifier.
Group has following properties:
|
description |
|
A list of identifiers under the group. Each entry must have format as described under a table for single idenfier entry. |
|
A textual description applicable for entire group |
Single identifier has following properties:
|
description |
|
The name of the function / syntax / value. The name doesn’t have to be unique - in particular with procedures, definition is repeated for all possible invocation overloads with different parameter counts. Required. |
|
S-expr defining signature. The format depends on a type (function / syntax / value) being described. In case of function, the format is either Each parameter is either of the form Parameter type is either:
Return type can be same as parameter type described above, plus:
In case of syntax, the format is Pattern should be: symbol, |
|
A list of symbols. Tags don’t have inherent special treatment (ie., definition can make use of any tag it wants). Currently used tags are described in [Tags] |
|
Additional elaboration of signatures for the parameters / returns / syntax fragments / datastructure content. Each entry in this list is a list,
where first element is a name (corresponding to parameter / syntax fragment / etc), and second parameter is its signature. The signature can be either
one of as described in
|
|
Textual description. |
Filterset is a coarse filter, and defines which libraries to include (and optionally how to rename them). Filterset definitions are structured into files one for each filterset option under filters/*.scm
, and a single root index file which defines names and paths to those files filters/index.scm
.
Index should be a list of alists. Each alist contains three fields:
-
code
- used in links; -
name
- displayed text; -
file
- associated filterset definition file.
Filterset definition file should be a list of pairs. car
is a symbolic library name (matching what is defined in index for identifiers definitions). cdr
is either a symbolic library name (in which case, all the usages of library in car
are renamed to what is in cdr
), or a #t
value (indicating to include library in car
as is, without a rename).
Open build
directory and execute bash build.sh
. Requires:
-
Chicken scheme compiler, with json, matchable and srfi 1 eggs installed;
-
Nodejs / npm installation.
After building, you’ll find schemeindex.zip
in build directory, which you can unzip and deploy from any web server. If you plan serving not from root, edit index.html
file and change <base href=".">
to point to appropriate prefix.