more than 80 gpl3+ licensed guile scheme libraries
Switch branches/tags
Nothing to show
Clone or download
sph-mn sph-lang-config no uses a different format: scheme expressions of alt…
…ernated key value and recognised two spaces indent for nesting, no .. special lists anymore and result is alist or hashtable.

add sph-cli option #:null-arguments to set arguments to be used when no arguments have been passed to the cli, for example to show --help by default.
add option to ht-from-alist to parse nested alists.
Latest commit b0110d9 Oct 20, 2018


see also


  • gnu guile >= 2
  • for the installation executable: shell
  • for (sph process create): linux, libc, gcc
  • for (sph scrypt): scrypt


su root

see more options using

./exe/install --help

all that is necessary is to put the paths under modules/ into a directory that is listed in $GUILE_LOAD_PATH


if you intend to use (sph process create) also call the following before install:


this is unfortunately necessary because guile does not come with a generic process creation procedure and it apparently can not be adequately implemented in scheme.

install destinations

  • /usr/share/guile/site/sph/
  • /usr/lib/



  • (sph base91) - encoder/decoder
  • (sph cli) - create command-line interfaces
  • (sph filesystem versioning) - gives a path to the next version of a file and automatically archives the old version
  • (sph install) - program and library installer
  • (sph io path-pipe-chain) - call procedures with input/output arguments in a chained manner to allow data flow between them
  • (sph lang parser type-signature) - a parser and writer for the sph type signature notation
  • (sph lang plcss) - s-expression language that compiles to css
  • (sph lang scm-format) - format scheme code
  • (sph lang template)
  • (sph libmagic) - binding to the libmagic library from the "file" utility that guesses file types
  • (sph process) - execute programs and evaluate shell or scheme code
  • (sph process create) - create child processes and process chains
  • (sph random-data) - generate random data. strings, booleans, lists, and more
  • (sph record) - vectors as records
  • (sph scgi) - scgi interface. a server that accepts scgi requests and calls a custom procedure to handle them
  • (sph scrypt) - use the scrypt key derivation function. depends on
  • (sph server) - a generic socket data processing server that uses a thread-pool for parallel request processing
  • (sph test) - automated code testing with composable modules
  • (sph test performance) - adaptive performance testing with formatted result display
  • (sph thread-pool) - thread-pool that uses wait-conditions to pause unused threads and has a customisable queue type
  • (sph time) - time as tai or utc nanoseconds since the unix epoch or gregorian calendar dates
  • (sph time gregorian) - gregorian calendar calculations
  • (sph time rfc3339) - parse and create strings in the rfc3339 time format
  • (sph vector selection) - create and analyse selections from sets: permutations, combinations, n-tuples
  • (sph web atom) - create atom syndication feeds with sxml


  • (sph alist) - association list processing
  • (sph base64) - encoder/decoder
  • (sph documentation) - extract and display guile scheme code documentation
  • (sph documentation display-format-itpn)
  • (sph documentation display-format-plist)
  • (sph documentation display-format-signature)
  • (sph documentation itpn)
  • (sph documentation shtml)
  • (sph exception) - rnrs exception helpers. experimental
  • (sph filesystem)
  • (sph hashtable) - rnrs-hashtable processing
  • (sph io other) - port and file input/output
  • (sph json) - a basic but fast json writer
  • (sph lang config) - a scheme syntax configuration file format for associative data structures
  • (sph lang indent-syntax) - converting to and from strings with indented lines
  • (sph lang itpn) - helpers for working with parsed itpn
  • (sph lang parser outline) - parse a document with possible nesting of sections where headings are prefixed by one or multiple characters
  • (sph lang scheme)
  • (sph lang scm-format base)
  • (sph lang scm-format format) - formatters for individual expressions
  • (sph lang scm-format transform) - transformations on the abstract syntax tree
  • (sph list) - helpers for working with lists
  • (sph list other) - additional list processing bindings that depend on libraries that depend on (sph list). to avoid circular dependencies
  • (sph log) - diagnostic logging with routing by category to none or many configurable output-targets
  • (sph math)
  • (sph module) - guile module system and rnrs library related procedures
  • (sph module binding-info) - get information about bindings in modules
  • (sph number)
  • (sph other) - miscellaneous
  • (sph server base)
  • (sph server fibers) - a generic socket data processing server that uses fibers for parallel request processing and non-blocking port input/output
  • (sph sql) - create sql-statements from scheme data
  • (sph stream) - srfi-41 stream helpers
  • (sph string) - string processing. includes string-replace-string, a fast replacer
  • (sph system reader) - a scheme reader that can include comments
  • (sph test base)
  • (sph test report)
  • (sph time stream) - create an srfi-41 stream of (sph time) date vectors between two dates
  • (sph time string) - time string conversions
  • (sph time utc) - utc related time calculations
  • (sph tree) - processing tree-like list structures
  • (sph uniform-vector) - helpers for srfi-4 and compatible vectors. for example f32vector
  • (sph vector) - vector processing
  • (sph web html)
  • (sph web http)
  • (sph web shtml) - helpers to create html as sxml


  • most procedures and modules have docstrings. extracted documentation can be browsed on
  • modules export the description as a string variable named like the module name and "description" joined with minus. for example (sph vector) exports sph-vector-description
  • "other/highlights" is a newline separated list of module names to include under "highlights" when creating a module listing with "exe/list-modules"