packages feed

hegg-0.1.0.0: src/Data/Equality/Graph.hs-boot

{-# LANGUAGE RoleAnnotations #-}
{-# LANGUAGE KindSignatures #-}
module Data.Equality.Graph where

import Data.Equality.Graph.Classes.Id
import Data.Equality.Graph.Nodes
import Data.Equality.Graph.ReprUnionFind
import {-# SOURCE #-} Data.Equality.Graph.Classes (EClass)

type role EGraph nominal
data EGraph l = EGraph
    { unionFind :: !ReprUnionFind
    , classes   :: !(ClassIdMap (EClass l))
    , memo      :: !(Memo l)
    , worklist  :: !(Worklist l)
    , analysisWorklist :: !(Worklist l)
    }

find :: ClassId -> EGraph l -> ClassId

type Memo l = NodeMap l ClassId
type Worklist l = NodeMap l ClassId