Skip to content

API Reference

Documentation for all public APIs in Epsilon.

Organization

The API documentation is organized by package, with each package having its own dedicated section. Within each package, you'll find:

  • Overview - Package purpose and design philosophy
  • Quick Start - Getting started examples
  • Functions - Detailed function reference
  • Macros - Macro documentation where applicable
  • Types - Data types and structures
  • Examples - Real-world usage examples
  • Best Practices - Recommendations and patterns

Core Libraries

Utility Libraries

Data Structures

System Integration

Cryptography

Data Formats

Networking

Development Tools

Using the API Documentation

Package Naming

All Epsilon packages follow a consistent naming scheme:

  • epsilon.lib.* - Core utility libraries
  • epsilon.sys.* - System integration libraries
  • epsilon.tool.* - Development tools
  • epsilon.* - Specialized modules (json, yaml, http, etc.)

Local Nicknames

Epsilon packages are designed to be used with local nicknames for cleaner code:

(defpackage #:my-app
  (:use #:cl)
  (:local-nicknames
    (#:map #:epsilon.map)
    (#:str #:epsilon.string)
    (#:fs #:epsilon.sys.fs)))

Function Naming Conventions

Epsilon follows consistent naming conventions across all packages:

  • Predicates end with -p: empty-p, directory-p
  • Constructors use make-: make-map, make-path
  • Converters use from-/to-: from-list, to-string
  • Destructive operations end with !: delete!, update!
  • Internal functions start with %: %validate-input

Error Handling

Epsilon APIs use Common Lisp condition system:

  1. Conditions - Packages define condition types
  2. Restarts - Available where applicable
  3. Defaults - Functions accept default values
  4. Validation - Input validation with error messages

Performance Notes

Documentation includes performance characteristics:

  • Time Complexity - Big-O notation
  • Space Complexity - Memory usage
  • Thread Safety - Concurrency notes
  • Allocation - Memory allocation

Contributing

To contribute to the API documentation:

  1. Documentation is generated from source code docstrings
  2. Follow the existing format and style
  3. Include examples for non-trivial functions
  4. Document edge cases and error conditions
  5. Add performance notes where relevant

Getting Help

  • Examples - See the Examples section
  • Tutorials - Check out the Tutorials section
  • Community - Join the Epsilon community forums
  • Issues - Report documentation issues on GitHub