effect-sessions-1.0: Sessions and session types for Concurrent Haskell

Safe HaskellNone
LanguageHaskell98

Data.Type.FiniteMap

Synopsis

Documentation

type Union m n = Nub (Sort (m :++ n)) Source

data Map k v Source

Constructors

k :-> v infixr 4 

Instances

Effect [Map Name Session] Process Source 
type Unit [Map Name Session] Process = [] (Map Name Session) Source 
type Plus [Map Name Session] Process s t = Union Name Session s t Source 
type Inv [Map Name Session] Process s t = Balanced s t Source 
type Cmp (Map Name Session) ((:->) Name Session c a) ((:->) Name Session d b) = CmpSessionMap ((:->) Name Session c a) ((:->) Name Session d b) Source

Compare channel names for normalising type-level finite map representations

type family Lookup m c :: Maybe v Source

Equations

Lookup [] k = Nothing 
Lookup ((k :-> v) : m) k = Just v 
Lookup (kvp : m) k = Lookup m k 

type family Member c m :: Bool Source

Equations

Member k [] = False 
Member k ((k :-> v) : m) = True 
Member k (kvp : m) = Member k m 

type family Combine a b :: v Source

Instances

type Combine Session s t = SessionSeq s t Source 

type family Cmp a b :: Ordering Source

Open-family for the ordering operation in the sort

Instances

type Cmp * ((:->) v a) ((:->) u b) = CmpSymbol v u Source

Symbol comparison

type Cmp (Map Name Session) ((:->) Name Session c a) ((:->) Name Session d b) = CmpSessionMap ((:->) Name Session c a) ((:->) Name Session d b) Source

Compare channel names for normalising type-level finite map representations

type family m :\ c :: [Map k v] Source

Equations

[] :\ k = [] 
((k :-> v) : m) :\ k = m :\ k 
(kvp : m) :\ k = kvp : (m :\ k) 

type family x :++ y :: [a] Source

Equations

[] :++ xs = xs 
(x : xs) :++ ys = x : (xs :++ ys)