Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data Graph a where
- data Empty :: Exp (Graph a)
- data Vertex :: a -> Exp (Graph a)
- data Edge :: a -> a -> Exp (Graph a)
- data Overlay :: Graph a -> Graph a -> Exp (Graph a)
- data Connect :: Graph a -> Graph a -> Exp (Graph a)
- data Map :: (a -> Exp b) -> Graph a -> Exp (Graph b)
- data FoldG :: Exp b -> (a -> Exp b) -> (b -> b -> Exp b) -> (b -> b -> Exp b) -> Graph a -> Exp b
- data ToAdjacencyMap :: Graph a -> Exp (AdjacencyMap a)
- data EqR :: Graph a -> Graph a -> Exp Bool
- data Size :: Graph a -> Exp Nat
- data HasVertex :: a -> Graph a -> Exp Bool
- data VertexSet :: Graph a -> Exp (Set a)
- data Simplify :: Graph a -> Exp (Graph a)
- data Simple :: (Graph a -> Graph a -> Exp (Graph a)) -> Graph a -> Graph a -> Exp (Graph a)
- data Simple' :: Graph a -> Graph a -> Graph a -> Exp (Graph a)
Documentation
Empty :: Graph a | |
Vertex :: a -> Graph a | |
Overlay :: Graph a -> Graph a -> Graph a | |
Connect :: Graph a -> Graph a -> Graph a |
Instances
type Eval (Empty :: Graph a -> Type) Source # | |
type Eval (Vertex a2 :: Graph a1 -> Type) Source # | |
type Eval (Simplify x :: Graph a -> Type) Source # | |
type Eval (Edge x y :: Graph a -> Type) Source # | |
type Eval (Overlay x y :: Graph a -> Type) Source # | |
type Eval (Connect x y :: Graph a -> Type) Source # | |
type Eval (Map f ('Connect x y) :: Graph b -> Type) Source # | |
type Eval (Map f ('Overlay x y) :: Graph b -> Type) Source # | |
type Eval (Map f ('Vertex a3) :: Graph a2 -> Type) Source # | |
type Eval (Map _1 ('Empty :: Graph a) :: Graph b -> Type) Source # | |
type Eval (Simple' x y z :: Graph a -> Type) Source # | |
type Eval (Simple f x y :: Graph a -> Type) Source # | |
data Empty :: Exp (Graph a) Source #
Empty
Example
>>>
:kind! (Eval Empty :: Graph Nat)
(Eval Empty :: Graph Nat) :: Graph Nat = 'Empty
data Vertex :: a -> Exp (Graph a) Source #
Vertex
Example
>>>
:kind! (Eval (Vertex 1) :: Graph Nat)
(Eval (Vertex 1) :: Graph Nat) :: Graph Nat = 'Vertex 1
data Edge :: a -> a -> Exp (Graph a) Source #
Edge
Example
>>>
:kind! (Eval (Edge 1 2) :: Graph Nat)
(Eval (Edge 1 2) :: Graph Nat) :: Graph Nat = 'Connect ('Vertex 1) ('Vertex 2)
data Overlay :: Graph a -> Graph a -> Exp (Graph a) Source #
Overlay
Example
>>>
:kind! (Eval (Overlay ('Vertex 1) ('Vertex 2)) :: Graph Nat)
(Eval (Overlay ('Vertex 1) ('Vertex 2)) :: Graph Nat) :: Graph Nat = 'Overlay ('Vertex 1) ('Vertex 2)
data Connect :: Graph a -> Graph a -> Exp (Graph a) Source #
Connect
Example
>>>
:kind! (Eval (Connect ('Vertex 1) ('Vertex 2)) :: Graph Nat)
(Eval (Connect ('Vertex 1) ('Vertex 2)) :: Graph Nat) :: Graph Nat = 'Connect ('Vertex 1) ('Vertex 2)
data Map :: (a -> Exp b) -> Graph a -> Exp (Graph b) Source #
Map
Example
>>>
:kind! Eval (Map ((+) 1) =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3))
Eval (Map ((+) 1) =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3)) :: Graph Nat = 'Connect ('Overlay ('Vertex 2) ('Vertex 3)) ('Vertex 4)
data FoldG :: Exp b -> (a -> Exp b) -> (b -> b -> Exp b) -> (b -> b -> Exp b) -> Graph a -> Exp b Source #
Foldg
Example
>>>
:kind! Eval (FoldG (Pure 0) Pure (+) (+) =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3))
Eval (FoldG (Pure 0) Pure (+) (+) =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3)) :: Nat = 6
data ToAdjacencyMap :: Graph a -> Exp (AdjacencyMap a) Source #
ToAdjacencyMap
Example
>>>
:kind! Eval (ToAdjacencyMap (Eval (Edge 1 2)))
Eval (ToAdjacencyMap (Eval (Edge 1 2))) :: AM.AdjacencyMap Nat = 'AM.AM ('Fcf.Data.MapC.MapC '[ '(1, 'S.Set '[2]), '(2, 'S.Set '[])])
Instances
type Eval (ToAdjacencyMap x :: AdjacencyMap a -> Type) Source # | |
Defined in Fcf.Data.Graph type Eval (ToAdjacencyMap x :: AdjacencyMap a -> Type) = Eval (FoldG (Empty :: AdjacencyMap a -> Type) (Vertex :: a -> AdjacencyMap a -> Type) (Overlay :: AdjacencyMap a -> AdjacencyMap a -> AdjacencyMap a -> Type) (Connect :: AdjacencyMap a -> AdjacencyMap a -> AdjacencyMap a -> Type) x) |
data EqR :: Graph a -> Graph a -> Exp Bool Source #
EqR
Example
>>>
:kind! Eval (EqR (Eval (Edge 1 3)) (Eval (Edge 1 2)))
Eval (EqR (Eval (Edge 1 3)) (Eval (Edge 1 2))) :: Bool = 'False
data Size :: Graph a -> Exp Nat Source #
Size
Example
>>>
:kind! Eval (Size =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3))
Eval (Size =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3)) :: Nat = 3
data HasVertex :: a -> Graph a -> Exp Bool Source #
HasVertex
Example
>>>
:kind! Eval (HasVertex 3 =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3))
Eval (HasVertex 3 =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3)) :: Bool = 'True
data VertexSet :: Graph a -> Exp (Set a) Source #
VertexSet
Example
>>>
:kind! Eval (VertexSet =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3))
Eval (VertexSet =<< Connect ('Overlay ('Vertex 1) ('Vertex 2)) ('Vertex 3)) :: S.Set Nat = 'S.Set '[3, 2, 1]
data Simplify :: Graph a -> Exp (Graph a) Source #
Simplify
Example
>>>
:kind! Eval (Simplify =<< Overlay ('Vertex 1) ('Overlay ('Vertex 2) ('Vertex 1)))
Eval (Simplify =<< Overlay ('Vertex 1) ('Overlay ('Vertex 2) ('Vertex 1))) :: Graph Nat = 'Overlay ('Vertex 2) ('Vertex 1)