full-sessions-0.4.189: yet another implementation of session types which does not require annotationsSource codeContentsIndex
Control.Concurrent.FullSession.Misc
Synopsis
class TCast a b | a -> b, b -> a where
typeCast :: a -> b
class TCast' t a b | t a -> b, t b -> a where
typeCast' :: t -> a -> b
class TCast'' t a b | t a -> b, t b -> a where
typeCast'' :: t -> a -> b
data S n
data Z
class Sub n n' n'' | n n' -> n''
data T
data F
data hd :|: tl
data Nil
class Length ls n | ls -> n
class Update n s t ss tt | n s t ss -> tt
Documentation
class TCast a b | a -> b, b -> a whereSource
TypeCast, from the HList library
Methods
typeCast :: a -> bSource
class TCast' t a b | t a -> b, t b -> a whereSource
Methods
typeCast' :: t -> a -> bSource
class TCast'' t a b | t a -> b, t b -> a whereSource
Methods
typeCast'' :: t -> a -> bSource
show/hide Instances
data S n Source
type-level peano number n+1
show/hide Instances
(AppendEnd n ss ss'', TCast ss' (Cap Nil End :|: ss'')) => AppendEnd (S n) ss ss'
(TCast ss (Cap Nil End :|: ss'), TCast l (S l'), EndedWithout n l' s ss') => EndedWithout (S n) l s ss
(TCast a (x :|: ss), TCast b (x :|: tt), Update n s t ss tt) => Update (S n) s t a b
Sub (S n) n (S Z)
Sub (S (S n)) n (S (S Z))
Sub (S (S (S n))) n (S (S (S Z)))
Sub (S (S (S (S n)))) n (S (S (S (S Z))))
Sub (S (S (S (S (S n))))) n (S (S (S (S (S Z)))))
Sub (S (S (S (S (S (S n)))))) n (S (S (S (S (S (S Z))))))
Sub (S (S (S (S (S (S (S n))))))) n (S (S (S (S (S (S (S Z)))))))
Sub (S (S (S (S (S (S (S (S n)))))))) n (S (S (S (S (S (S (S (S Z))))))))
Sub (S (S (S (S (S (S (S (S (S n))))))))) n (S (S (S (S (S (S (S (S (S Z)))))))))
Sub (S (S (S (S (S (S (S (S (S (S n)))))))))) n (S (S (S (S (S (S (S (S (S (S Z))))))))))
Sub (S (S (S (S (S (S (S (S (S (S (S n))))))))))) n (S (S (S (S (S (S (S (S (S (S (S Z)))))))))))
Sub (S (S (S (S (S (S (S (S (S (S (S (S n)))))))))))) n (S (S (S (S (S (S (S (S (S (S (S (S Z))))))))))))
(TCast s (Cap Nil End), Ended n ss) => Ended (S n) (s :|: ss)
Length ts n => Length (t :|: ts) (S n)
data Z Source
type-level peano number 0
show/hide Instances
Length Nil Z
Ended Z Nil
Sub n n Z
TCast ss ss' => AppendEnd Z ss ss'
(TCast ss (s :|: ss'), TCast l (S l'), Ended l' ss') => EndedWithout Z l s ss
(TCast a (s :|: ss), TCast b (t :|: ss)) => Update Z s t a b
class Sub n n' n'' | n n' -> n''Source
subtraction
show/hide Instances
Sub n n Z
Sub (S n) n (S Z)
Sub (S (S n)) n (S (S Z))
Sub (S (S (S n))) n (S (S (S Z)))
Sub (S (S (S (S n)))) n (S (S (S (S Z))))
Sub (S (S (S (S (S n))))) n (S (S (S (S (S Z)))))
Sub (S (S (S (S (S (S n)))))) n (S (S (S (S (S (S Z))))))
Sub (S (S (S (S (S (S (S n))))))) n (S (S (S (S (S (S (S Z)))))))
Sub (S (S (S (S (S (S (S (S n)))))))) n (S (S (S (S (S (S (S (S Z))))))))
Sub (S (S (S (S (S (S (S (S (S n))))))))) n (S (S (S (S (S (S (S (S (S Z)))))))))
Sub (S (S (S (S (S (S (S (S (S (S n)))))))))) n (S (S (S (S (S (S (S (S (S (S Z))))))))))
Sub (S (S (S (S (S (S (S (S (S (S (S n))))))))))) n (S (S (S (S (S (S (S (S (S (S (S Z)))))))))))
Sub (S (S (S (S (S (S (S (S (S (S (S (S n)))))))))))) n (S (S (S (S (S (S (S (S (S (S (S (S Z))))))))))))
data T Source
type-level boolean True
show/hide Instances
IsEnded Nil T
TCast tt' tt => Par2 T ss tt' tt
data F Source
type-level boolean False
show/hide Instances
Par ss tt' tt => Par2 F ss tt' tt
IsEnded (Cap e (Var v) :|: ss) F
IsEnded (Cap e (Rec r) :|: ss) F
IsEnded (Cap e Bot :|: ss) F
IsEnded (Cap e (Offer x y) :|: ss) F
IsEnded (Cap e (Select x y) :|: ss) F
IsEnded (Cap e (Catch x y) :|: ss) F
IsEnded (Cap e (Throw x y) :|: ss) F
IsEnded (Cap e (Recv x y) :|: ss) F
IsEnded (Cap e (Send x y) :|: ss) F
data hd :|: tl Source
type-level list cons
show/hide Instances
(TCast s (Cap Nil End), Ended n ss) => Ended (S n) (s :|: ss)
IsEnded (Cap e (Var v) :|: ss) F
IsEnded (Cap e (Rec r) :|: ss) F
IsEnded (Cap e Bot :|: ss) F
IsEnded (Cap e (Offer x y) :|: ss) F
IsEnded (Cap e (Select x y) :|: ss) F
IsEnded (Cap e (Catch x y) :|: ss) F
IsEnded (Cap e (Throw x y) :|: ss) F
IsEnded (Cap e (Recv x y) :|: ss) F
IsEnded (Cap e (Send x y) :|: ss) F
IsEnded ss b => IsEnded (Cap Nil End :|: ss) b
Length ts n => Length (t :|: ts) (S n)
(Comp s t' t, IsEnded ss b, Par2 b ss tt' tt) => Par (s :|: ss) (t' :|: tt') (t :|: tt)
data Nil Source
type-level list nil
show/hide Instances
class Length ls n | ls -> nSource
list length
show/hide Instances
Length Nil Z
Length Nil Z
Length ts n => Length (t :|: ts) (S n)
Length ts n => Length (t :|: ts) (S n)
class Update n s t ss tt | n s t ss -> ttSource
A type-level list update operation update(n,s,t,ss) = tt update(n+1, s, t, x:ss) = x:update(n, s, t, ss) update(0, s, t, x:ss) | x==s = t:ss | otherwise = undefined ex. update(1, Cap Nil (Send Int End), Cap Nil End, c1:(Cap Nil Send Int End):c3:ss) = c1:(Cap Nil End):c3:ss
show/hide Instances
(TCast a (s :|: ss), TCast b (t :|: ss)) => Update Z s t a b
(TCast a (x :|: ss), TCast b (x :|: tt), Update n s t ss tt) => Update (S n) s t a b
Produced by Haddock version 2.4.2