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¶
- epsilon.argparse - Command-line argument parsing with subcommand support
- epsilon.map - Immutable hash-array mapped trie (HAMT) implementation
- epsilon.sequence - Lazy sequences with functional operations (coming soon)
- epsilon.string - Unicode-aware string manipulation
- epsilon.path - Cross-platform path manipulation (coming soon)
Data Structures¶
- epsilon.set - Immutable sets based on HAMT (coming soon)
- epsilon.table - Table formatting and display (coming soon)
- epsilon.list - Extended list operations
System Integration¶
- epsilon.sys.fs - Filesystem operations (coming soon)
- epsilon.sys.env - Environment variable access (coming soon)
- epsilon.sys.thread - Threading and concurrency (coming soon)
- epsilon.sys.process - Process management (coming soon)
Cryptography¶
- epsilon.lib.digest - Cryptographic hash functions (coming soon)
- epsilon.lib.checksum - CRC and checksum algorithms (coming soon)
- epsilon.lib.uuid - UUID generation and parsing (coming soon)
Data Formats¶
- epsilon.json - JSON encoding and decoding (coming soon)
- epsilon.yaml - YAML processing (coming soon)
- epsilon.msgpack - MessagePack binary serialization (coming soon)
- epsilon.xml - XML parsing and generation (coming soon)
Networking¶
- epsilon.http - HTTP client and server (coming soon)
- epsilon.websocket - WebSocket client and server (coming soon)
- epsilon.crypto - Cryptographic operations and TLS/SSL support
Development Tools¶
- epsilon.test - Testing framework
- epsilon.loader - Package loader
- epsilon.tool.package - Package management (coming soon)
Using the API Documentation¶
Package Naming¶
All Epsilon packages follow a consistent naming scheme:
epsilon.lib.*
- Core utility librariesepsilon.sys.*
- System integration librariesepsilon.tool.*
- Development toolsepsilon.*
- 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:
- Conditions - Packages define condition types
- Restarts - Available where applicable
- Defaults - Functions accept default values
- 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:
- Documentation is generated from source code docstrings
- Follow the existing format and style
- Include examples for non-trivial functions
- Document edge cases and error conditions
- Add performance notes where relevant