Skip to content

Commit 3dc0c82

Browse files
committed
Add experimental notice on dag and multi
1 parent 4cbd558 commit 3dc0c82

File tree

6 files changed

+78
-0
lines changed

6 files changed

+78
-0
lines changed

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,24 @@ A graph algorithm library for Gleam, providing implementations of classic graph
4848
- **Efficient Data Structures**: Pairing heap for priority queues, two-list queue for BFS
4949
- **Property-Based Testing**: Exhaustively tested across core graph operations and invariants using `qcheck`
5050

51+
### ⚠️ Experimental Features
52+
53+
The following modules are **experimental** and provide minimal, working functionality:
54+
55+
- **Multigraphs** (`yog/multi/*`): Support for graphs with multiple edges between the same pair of nodes
56+
- Multiple parallel edges with unique edge IDs
57+
- Eulerian path and circuit detection for multigraphs
58+
- BFS/DFS traversal adapted for parallel edges
59+
- Conversion to simple graphs with configurable edge merging strategies
60+
- **DAG-specific operations** (`yog/dag/*`): Type-safe wrapper for directed acyclic graphs
61+
- Compile-time acyclicity guarantees
62+
- O(V+E) DAG-specific algorithms (longest path, shortest path)
63+
- Transitive closure and reduction
64+
- Lowest common ancestors (LCA)
65+
- Reachability counting for ancestors/descendants
66+
67+
These modules are functional but may not be fully optimized for performance. Additional features, performance enhancements, and API changes are expected in future versions. Use with caution in production environments.
68+
5169
## Installation
5270

5371
Add Yog to your Gleam project:

src/yog/dag/algorithms.gleam

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
//// # ⚠️ Experimental Module
2+
////
3+
//// This module is experimental and provides minimal, working functionality.
4+
//// The implementation is functional but may not be fully optimized for performance.
5+
////
6+
//// **Expected changes:**
7+
//// - Additional features and algorithms will be added
8+
//// - Performance enhancements and optimizations
9+
//// - API may be subject to change in future versions
10+
////
11+
//// Use with caution in production environments.
12+
113
import gleam/dict
214
import gleam/list
315
import gleam/option.{type Option, None, Some}

src/yog/dag/models.gleam

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
//// # ⚠️ Experimental Module
2+
////
3+
//// This module is experimental and provides minimal, working functionality.
4+
//// The implementation is functional but may not be fully optimized for performance.
5+
////
6+
//// **Expected changes:**
7+
//// - Additional features and algorithms will be added
8+
//// - Performance enhancements and optimizations
9+
//// - API may be subject to change in future versions
10+
////
11+
//// Use with caution in production environments.
12+
113
import yog/model.{type Graph}
214
import yog/property/cyclicity as properties
315

src/yog/multi/eulerian.gleam

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
//// # ⚠️ Experimental Module
2+
////
3+
//// This module is experimental and provides minimal, working functionality.
4+
//// The implementation is functional but may not be fully optimized for performance.
5+
////
6+
//// **Expected changes:**
7+
//// - Additional features and algorithms will be added
8+
//// - Performance enhancements and optimizations
9+
//// - API may be subject to change in future versions
10+
////
11+
//// Use with caution in production environments.
12+
113
import gleam/dict
214
import gleam/list
315
import gleam/option.{type Option, None, Some}

src/yog/multi/model.gleam

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
//// # ⚠️ Experimental Module
2+
////
3+
//// This module is experimental and provides minimal, working functionality.
4+
//// The implementation is functional but may not be fully optimized for performance.
5+
////
6+
//// **Expected changes:**
7+
//// - Additional features and algorithms will be added
8+
//// - Performance enhancements and optimizations
9+
//// - API may be subject to change in future versions
10+
////
11+
//// Use with caution in production environments.
12+
113
import gleam/dict.{type Dict}
214
import gleam/list
315
import gleam/option.{None, Some}

src/yog/multi/traversal.gleam

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
//// # ⚠️ Experimental Module
2+
////
3+
//// This module is experimental and provides minimal, working functionality.
4+
//// The implementation is functional but may not be fully optimized for performance.
5+
////
6+
//// **Expected changes:**
7+
//// - Additional features and algorithms will be added
8+
//// - Performance enhancements and optimizations
9+
//// - API may be subject to change in future versions
10+
////
11+
//// Use with caution in production environments.
12+
113
import gleam/list
214
import gleam/option.{type Option, None, Some}
315
import gleam/set.{type Set}

0 commit comments

Comments
 (0)