Skip to content

API Reference

Complete API documentation for Epsilon packages, organized by functional area.

Core Data Structures

Epsilon's immutable, functional data structures provide the foundation for all data manipulation.

Collections

  • Map - Immutable hash-array mapped trie (HAMT) implementation
  • Key-value associations with O(log n) operations
  • Nested access with get-in, assoc-in, update-in
  • Functional transformations: map, filter, reduce

  • Sequence - Lazy sequences with functional operations

  • Lazy evaluation with memoization support
  • Infinite sequence capabilities
  • Rich operation library: map, filter, take, drop

  • Set - Immutable sets based on HAMT structure

  • Mathematical set operations (union, intersection, difference)
  • O(log n) membership testing and modifications

  • List - Extended operations on Common Lisp lists (documentation pending)

  • Alist/plist conversion utilities
  • Circular list detection and handling

Utilities

  • Vector - Vector operations and bounds checking (documentation pending)
  • Collect - Collection macros for efficient list building (documentation pending)

Data Encoding & Serialization

Text Formats

  • JSON - JSON encoding/decoding with Unicode support (documentation pending)
  • Full JSON specification compliance
  • Streaming parser for large documents
  • Configurable encoding options

  • YAML - YAML document processing (documentation pending)

  • YAML 1.2 specification support
  • Document and stream processing

  • XML - XML parsing and generation (documentation pending)

Binary Formats

  • Base64 - Base64 encoding and decoding (documentation pending)
  • Hex - Hexadecimal string conversion (documentation pending)
  • MessagePack - Binary serialization format (documentation pending)
  • Binary - Low-level binary data handling (documentation pending)

Cryptography & Hashing

Hash Functions

  • Digest - SHA-2 family hash functions (documentation pending)
  • SHA-224, SHA-256, SHA-384, SHA-512 implementations
  • Multiple output formats (bytes, hex, base64)

  • Checksum - Non-cryptographic checksums (documentation pending)

  • CRC-32 and Adler-32 implementations
  • Stream-based processing support

Text Processing

String Operations

  • String - String manipulation and utilities (documentation pending)
  • Unicode-aware string processing
  • Pattern matching and replacement

  • Character - Character operations and Unicode support (documentation pending)

  • Regex - Regular expression matching (documentation pending)

Parsing & Generation

  • URI - URI parsing, construction, and manipulation (documentation pending)
  • UUID - UUID generation and parsing (documentation pending)
  • Time - Time and date utilities (documentation pending)

System Integration

Threading & Concurrency

  • Thread - Threading primitives and thread pools (documentation pending)
  • Lock - Synchronization primitives (documentation pending)
  • Atomic - Atomic operations and lock-free data structures (documentation pending)

System Services

  • FS - Filesystem operations and path manipulation (documentation pending)
  • Env - Environment variable access (documentation pending)
  • Process - Process creation and management (documentation pending)

Package System

  • Package - Package utilities and introspection (documentation pending)

Network Programming

HTTP

  • HTTP - Complete HTTP client and server (documentation pending)
  • HTTP/1.1 specification compliance
  • Connection pooling and keep-alive
  • TLS/SSL support

Core Networking

  • Socket - Low-level socket operations (documentation pending)
  • DNS - DNS resolution and caching (documentation pending)

Development Tools

Build System

  • Build - Dependency-tracking build system (documentation pending)
  • Content-based change detection
  • Incremental compilation
  • Module dependency resolution

Testing

  • Test - Test definition and execution framework (documentation pending)
  • Hierarchical test organization
  • Multiple output formats (TAP, JUnit XML)
  • Performance metrics collection

Performance

  • Benchmark - Benchmarking framework (documentation pending)
  • Statistical analysis of performance
  • Comparison between implementations
  • Memory usage profiling

Code Quality

  • Format - Code formatting and pretty-printing (documentation pending)

Usage Patterns

Package Integration

All API packages use local nicknames for clean integration:

(defpackage #:my-application
  (:use #:common-lisp)
  (:local-nicknames
    (#:map #:epsilon.lib.map)
    (#:seq #:epsilon.lib.sequence)
    (#:json #:epsilon.lib.json)
    (#:http #:epsilon.net.http)))

(in-package #:my-application)

;; Clean, readable code
(let ((data (map:make-map :users (seq:from-list users))))
  (json:encode data))

Function Naming Conventions

  • Predicates end with -p: empty-p, contains-p
  • Constructors often start with make-: make-map, make-set
  • Converters use from-/to- patterns: from-list, to-vector
  • Destructive operations end with !: assoc!, update!

Error Handling

All functions follow consistent error handling patterns: - Invalid arguments signal appropriate condition types - Optional default values for missing keys/elements - Graceful degradation where possible

Performance Characteristics

Function documentation includes performance notes where relevant: - Time complexity (O(1), O(log n), O(n)) - Space complexity for large data structures - Memory allocation patterns


Documentation Generation

This API reference is partially generated from source code using:

# Generate documentation for a specific package
./scripts/generate-api-docs.sh epsilon.lib.map

# Generate docs with output file
./scripts/generate-api-docs.sh epsilon.lib.sequence docs/docs/reference/api/sequence.md

The generator extracts: - Function signatures with parameter lists - Documentation strings - Symbol types (function, macro, variable) - Source code comments


For implementation examples and usage patterns, see Examples.