dag: Basic type-safe directed acyclic graphs.
This version is deprecated.
This is a type-safe approach for a directed acyclic graph.
Edge construction is inductive, creating a "schema":
import Data.Graph.DAG.Edge -- | Edges are statically defined: edges = ECons (Edge :: EdgeValue "foo" "bar") $ ECons (Edge :: EdgeValue "bar" "baz") $ ECons (Edge :: EdgeValue "foo" "baz") unique -- ENil, but for uniquely edged graphs
Which we use to populate nodes with values:
data Cool = AllRight | Radical | SuperDuper graph = GCons "foo" AllRight $ GCons "bar" Radical $ GCons "baz" SuperDuper $ GNil edges
It's an instance of Functor
, but we haven't done much here - it will require
a lot of reflection that I don't have time to implement right now - there isn't
even binding of value-based GCons
keys and ECons
edge node labels.
Some type tomfoolery:
*Data.Graph.DAG> :t edges edges :: EdgeSchema '['EdgeType "foo" "bar", 'EdgeType "bar" "baz", 'EdgeType "foo" "baz"] -- Type list of edges '['("foo", '["bar", "baz"]), '("bar", '["baz"])] -- potential loops 'True -- uniqueness
*Data.Graph.DAG> :t getSpanningTrees $ edges getSpanningTrees $ edges :: Data.Proxy.Proxy '['Node "foo" '['Node "bar" '['Node "baz" '[]], 'Node "baz" '[]], 'Node "bar" '['Node "baz" '[]], 'Node "baz" '[]]
This library is still very naive, but it will give us compile-time enforcement of acyclicity (and uniqueness) in these graphs - ideal for dependency graphs.
Downloads
- dag-0.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.0.1, 0.0.2, 0.0.2.1, 0.1, 0.1.0.1, 0.1.0.2 (info) |
---|---|
Dependencies | base (>=4 && <5), constraints [details] |
License | BSD-3-Clause |
Author | Athan Clark <athan.clark@gmail.com> |
Maintainer | Athan Clark <athan.clark@gmail.com> |
Source repo | head: git clone https://github.com/athanclark/dag |
Uploaded | by athanclark at 2015-01-19T02:20:35Z |
Distributions | |
Reverse Dependencies | 1 direct, 0 indirect [details] |
Downloads | 3537 total (8 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |