This is the documentation website for the extempore programming system.
This documentation is only as up to date as the xtmdoc.json file that is included in this repository.
Use your favourite webserver and serve the root directory of this repository, easy options include:
// python 2
python -m SimpleHTTPServer 8000
// python 3
python3 -m http.server
// node
live-server
Point your browser to the index.html.
This documentation set tracks several categories of Extempore language items.
Category | Description | Args? | Type? | Docstring? |
---|---|---|---|---|
builtin | Defined within the compiler | ✓ | ✓ | ✓ |
polymorphic closure | A closure that can defer to multiple underlying closures, depending on the types of the passed arguments. The result of a bind-poly call. | ✓ | ✓ (one type for each underlying function) | ✓ (one for the poly version, and links to the poly'd over functions) |
closure | A function that has closed over its environment variables. The result of a bind-func call. | ✓ | ✓ | ✓ |
named type | A named data structure. The result of a bind-type call. | ✓ | ✓ | ✓ |
type alias | A alternate name for a type. The result of a bind-alias call. | x | ✓ | ✓ |
generic closure | A closure that does type inferencing at compile time, choosing type depending on the passed arguments. Result of bind-func call with `!var` generic variables. | ✓ | ✓ | ✓ |
global var | A mutable globally available variable. Result of bind-val call. | x | ✓ | ✓ |
C functions | Functions from C libraries that have been imported either through the clang compiler or from manually imported libraries. Result of sys:load-dylib and bind-lib calls. | ✓ | ✓ | ✓ |
Unless you are developing this package further you don't need the dependencies, the repository keeps the website in a working state.
Install npm dependencies with (assuming you have npm installed):
npm install
There are some packages that are normally installed globally (i.e. installed with -g flag):
bower
grunt-cli
live-server
...but you can also run these from from the node_modules directory, like:
node node_modules/live-server/live-server.js
Install bower dependencies with:
//global
bower install
//or local
node_modules/bower/bin/bower install
The default grunt task:
//global
grunt
//local
node_modules/grunt-cli/grunt
...will regenerate the necessary js and css files from source.
The watch
task will watch source files and recompile as they change, but not for third party libraries. Third party libraries are manually specified in the Gruntfile and are regenerated by the default task.
Start an extempore session and run:
(xtmdoc-export-caches-to-json "/whatever/directory/you/want/xtmdoc.json")
This will generate a new xtmdoc.json
file. Without including preceeding directory it will generate in the extempore install directory.