unison-parser-typechecker-0.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Unison.PatternMatchCoverage.UFMap

Synopsis

Documentation

data UFMap k v Source #

A union-find structure. Used by NormalizedConstraints to provide efficient unification.

Instances

Instances details
(Show k, Show v) => Show (UFMap k v) Source # 
Instance details

Defined in Unison.PatternMatchCoverage.UFMap

Methods

showsPrec :: Int -> UFMap k v -> ShowS #

show :: UFMap k v -> String #

showList :: [UFMap k v] -> ShowS #

(Eq k, Eq v) => Eq (UFMap k v) Source # 
Instance details

Defined in Unison.PatternMatchCoverage.UFMap

Methods

(==) :: UFMap k v -> UFMap k v -> Bool #

(/=) :: UFMap k v -> UFMap k v -> Bool #

(Ord k, Ord v) => Ord (UFMap k v) Source # 
Instance details

Defined in Unison.PatternMatchCoverage.UFMap

Methods

compare :: UFMap k v -> UFMap k v -> Ordering #

(<) :: UFMap k v -> UFMap k v -> Bool #

(<=) :: UFMap k v -> UFMap k v -> Bool #

(>) :: UFMap k v -> UFMap k v -> Bool #

(>=) :: UFMap k v -> UFMap k v -> Bool #

max :: UFMap k v -> UFMap k v -> UFMap k v #

min :: UFMap k v -> UFMap k v -> UFMap k v #

data UFValue k v Source #

Constructors

Indirection !k

This is not the canonical value, lookup k in the map to try again

Canonical !Int !v

The number of elements in the equivalence class

Instances

Instances details
(Show k, Show v) => Show (UFValue k v) Source # 
Instance details

Defined in Unison.PatternMatchCoverage.UFMap

Methods

showsPrec :: Int -> UFValue k v -> ShowS #

show :: UFValue k v -> String #

showList :: [UFValue k v] -> ShowS #

(Eq k, Eq v) => Eq (UFValue k v) Source # 
Instance details

Defined in Unison.PatternMatchCoverage.UFMap

Methods

(==) :: UFValue k v -> UFValue k v -> Bool #

(/=) :: UFValue k v -> UFValue k v -> Bool #

(Ord k, Ord v) => Ord (UFValue k v) Source # 
Instance details

Defined in Unison.PatternMatchCoverage.UFMap

Methods

compare :: UFValue k v -> UFValue k v -> Ordering #

(<) :: UFValue k v -> UFValue k v -> Bool #

(<=) :: UFValue k v -> UFValue k v -> Bool #

(>) :: UFValue k v -> UFValue k v -> Bool #

(>=) :: UFValue k v -> UFValue k v -> Bool #

max :: UFValue k v -> UFValue k v -> UFValue k v #

min :: UFValue k v -> UFValue k v -> UFValue k v #

lookupCanon Source #

Arguments

:: Ord k 
=> k 
-> UFMap k v 
-> Maybe (k, Int, v, UFMap k v)

returns:

  • the canonical member of the equivalence set
  • the size of the equivalence set
  • the associated value
  • the UFMap after path compression

Lookup the canonical value

insert :: Ord k => k -> v -> UFMap k v -> UFMap k v Source #

union :: forall m k v r. (MonadFix m, Ord k) => k -> k -> UFMap k v -> (UFMap k v -> m r) -> (k -> v -> UFMap k v -> m (Maybe r)) -> m (Maybe r) Source #

alterF :: forall f k v. (Functor f, Ord k) => k -> f (Maybe v) -> (k -> Int -> v -> f (UFValue k v)) -> UFMap k v -> f (UFMap k v) Source #

alter :: forall k v. Ord k => k -> Maybe v -> (k -> Int -> v -> UFValue k v) -> UFMap k v -> UFMap k v Source #

keys :: UFMap k v -> [k] Source #

toClasses Source #

Arguments

:: forall k v. Ord k 
=> UFMap k v 
-> [(k, Set k, v)]
(canonical key, equivalence class, value)

Dump the UFmap to a list grouped by equivalence class