# ex_stdlib
Elixir-inspired standard library modules implemented in Erlang.
## Overview
This project provides Erlang implementations of useful modules from Elixir's standard library, bringing modern functional programming patterns and concurrent programming abstractions to Erlang.
## Modules
### Core Modules
- **`agent`** - Simple state management abstraction around GenServer
- **`task`** - Asynchronous task execution with async/await patterns
- **`registry`** - Local, decentralized key-value process storage for service discovery and pub-sub
- **`process`** - Convenient process management utilities and wrappers
- **`keyword`** - Keyword list operations and utilities inspired by Elixir
- **`uri`** - URI parsing, manipulation, and encoding/decoding utilities
- **`base`** - Base16, Base32, and Base64 encoding/decoding with multiple variants
- **`path`** - Cross-platform file system path manipulation and utilities
- **`function`** - Function utilities including composition, currying, and memoization
- **`dynamic_supervisor`** - Dynamic supervisor optimized for millions of children
### Features
- **Type-safe**: Complete `-spec` annotations for all functions
- **Well-documented**: Comprehensive EDoc documentation with examples
- **Battle-tested**: Extensive test suites covering edge cases and error conditions
- **Production-ready**: Follows OTP best practices and Erlang coding conventions
## Quick Start
### Build
```bash
rebar3 compile
```
### Run Tests
```bash
rebar3 eunit
```
### Examples
See the `examples/` directory for usage examples, or start an Erlang shell:
```bash
erl -pa _build/default/lib/ex_stdlib/ebin
```
```erlang
% Agent example - simple state management
{ok, Agent} = agent:start_link(fun() -> 0 end).
agent:update(Agent, fun(State) -> State + 1 end).
1 = agent:get(Agent, fun(State) -> State end).
% Task example - async/await
Task = task:async(fun() -> expensive_computation() end).
OtherResult = do_other_work().
TaskResult = task:await(Task).
```
## Project Structure
```
ex_stdlib/
├── src/ # Core library modules
├── test/ # EUnit test suites
├── examples/ # Usage examples
└── _build/ # Compiled artifacts
```
## Documentation
For detailed API documentation, see individual module documentation in the source files or generate with:
```bash
rebar3 edoc
```