dag alternatives and similar packages
Based on the "Unclassified" category.
Alternatively, view dag alternatives based on common mentions on social networks and blogs.
-
bit-stream
Lazy infinite compact streams with cache-friendly O(1) indexing and applications for memoization -
dependent-sum-template
DISCONTINUED. Template Haskell code to generate instances of classes in dependent-sum package -
argon2
Haskell bindings to libargon2 - the reference implementation of the Argon2 password-hashing function
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of dag or a related project?
Popular Comparisons
README
dag
Directed Acyclic Graphs for Haskell
Description
This is a type-safe directed acyclic graph library for Haskell. This library differs from others in a number of ways:
- Edge construction is incremental, creating a "schema":
{-# LANGUAGE DataKinds #-}
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 casted for uniquely edged graphs
- The nodes are separate from edges; graph may be not connected:
data Cool = AllRight
| Radical
| SuperDuper
graph = GCons "foo" AllRight $
GCons "bar" Radical $
GCons "baz" SuperDuper $
GNil edges
- Type safety throughout edge construction:
*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
- Various type-level computation
*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" '[]]
*Data.Graph.DAG> reflect $ getSpanningTrees $ edges
[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 in these graphs - ideal for dependency graphs.
Usage
You will need -XDataKinds
for the type-level symbols:
{-# LANGUAGE DataKinds #-}
import Data.Graph.DAG
import GHC.TypeLits
...