-- This file is part of the 'union-find-array' library. It is licensed
-- under an MIT license. See the accompanying 'LICENSE' file for details.
--
-- Authors: Bertram Felgenhauer
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Data.Union.Type (
Union (..),
Node (..),
) where
import Data.Array.Unboxed
import Data.Array
-- | An immutable disjoint set forest.
data Union a = Union {
size :: !Int,
up :: UArray Int Int,
label :: Array Int a
}
-- | A node in a disjoint set forest.
newtype Node = Node { fromNode :: Int }
deriving (Eq, Ord, Ix)