Carp

Working with libraries and modules

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.

Loading via git

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")

Documentation

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.

Auto generated API documentation

Some External Libraries

For a growing list of Carp packages, see Carpentry.

Do you have a library that you want to plug here? Pleas make a PR!