Carp comes with a standard library called Core, sources are here.
It consists of a number of modules.
Documentation is available online as well as locally for most of them.
The majority of modules are loaded by default, see Core.carp for details.
If your CARP_DIR
environment variable is set up properly, then the remaining libraries can easily be imported using the load
command. For example, to get access to the Bench module, do the following:
(load "Bench.carp")
Using the functions in the Bench module still requires pre-pending them with the module name, i.e. (Bench.bench fib)
. To avoid that, also do (use Bench)
.
To see what functions a certain module contains, use the info
command:
(info Bench)
External librares can be loaded by using their relative or absolute location in your file system as the path. To make a library publically available in a more general way you can add it to your Carp project's search path:s (found by running :p
in the repl). For instance, here's how you would add the NCurses library so that it can be loaded with just (load "NCurses.carp")
.
(Project.config "search-path" "~/Projects/carp-ncurses")
This line of configuration can be put into profile.carp to make it apply in all your projects.
You can also load libraries via Git like that:
(load "git@github.com:hellerve/anima.carp@master")
This will download the Anima library to
~/.carp/libs/<library>/<tag>
and load the file anima.carp
in it. To get a
stable version of the library you should specify a git tag rather than
@master
.
If you want to make a library ready for loading, either prepare a file that has the same name
as the library—in the case above, anima.carp
—or a file called main.carp
as
an entrypoint.
Please note that for private repos only loading through SSH is supported. For public repos you can use HTTPS:
(load "https://github.com/hellerve/anima@master")
You can generate HTML documentation for a set of modules by running save-docs
in the REPL:
> (save-docs Int Float String)
See the ReadMe for updating the entire standard library documentation or the program for examples of how to configure the documentation generator.
- Anima (A simple drawing and animation framework)
- Stdint (A wrapper around the types defined in stdint.h)
- Socket (A wrapper around C sockets)
- Physics (A port of phys.js)
- NCurses (https://www.gnu.org/software/ncurses/)
- Curl (Simple bindings to the Curl library)
For a growing list of Carp packages, see Carpentry.
Do you have a library that you want to plug here? Pleas make a PR!