TypeConstraint

Index

Types

Eq[a, b]

type Eq[a: *, b: *]

Sub[a, b]

type Sub[a: -*, b: +*]

Sup[a, b]

type Sup[a: +*, b: -*]

Values

cast

def cast[a, b](s: Eq[a, b], a: a) -> b

compose_eq

def compose_eq[a, b, c](first: Eq[a, b], second: Eq[b, c]) -> Eq[a, c]

compose_sub

def compose_sub[a, b, c](first: Sub[a, b], second: Sub[b, c]) -> Sub[a, c]

compose_sup

def compose_sup[a, b, c](first: Sup[a, b], second: Sup[b, c]) -> Sup[a, c]

downcast

def downcast[a, b](s: Sup[a, b], a: b) -> a

eq_to_sub

def eq_to_sub[a, b](eq: Eq[a, b]) -> Sub[a, b]

eq_to_sup

def eq_to_sup[a, b](eq: Eq[a, b]) -> Sup[a, b]

flip_eq

def flip_eq[a, b](eq: Eq[a, b]) -> Eq[b, a]

narrow

def narrow[a, b, c: -* -> *](s: Sup[a, b], fa: c[a]) -> c[b]

refl

refl: forall a: *. Eq[a, a]

refl_sub

refl_sub: forall a: *. Sub[a, a]

refl_sup

refl_sup: forall a: *. Sup[a, a]

sub_to_sup

def sub_to_sup[a, b](sub: Sub[a, b]) -> Sup[b, a]

substitute

def substitute[a, b, c: * -> *](eq: Eq[a, b], fa: c[a]) -> c[b]

sup_to_sub

def sup_to_sub[a, b](sup: Sup[a, b]) -> Sub[b, a]

upcast

def upcast[a, b](s: Sub[a, b], a: a) -> b

widen

def widen[a, b, c: +* -> *](s: Sub[a, b], fa: c[a]) -> c[b]
The source code for this page can be found here.