eyg/analysis/type_/binding

Types

pub type Binding {
  Bound(isomorphic.Type(Int))
  Unbound(level: Int)
}

Constructors

pub type Mono =
  isomorphic.Type(Int)
pub type Poly =
  isomorphic.Type(#(Bool, Int))

Values

pub fn gen(
  type_: isomorphic.Type(Int),
  level: Int,
  bindings: dict.Dict(Int, Binding),
) -> isomorphic.Type(#(Bool, Int))
pub fn instantiate(
  poly: isomorphic.Type(#(Bool, Int)),
  level: Int,
  bindings: dict.Dict(Int, Binding),
) -> #(isomorphic.Type(Int), dict.Dict(Int, Binding))
pub fn mono(
  level: Int,
  bindings: dict.Dict(Int, Binding),
) -> #(isomorphic.Type(Int), dict.Dict(Int, Binding))
pub fn poly(
  level: Int,
  bindings: dict.Dict(Int, Binding),
) -> #(isomorphic.Type(#(Bool, Int)), dict.Dict(Int, Binding))
pub fn resolve(
  type_: isomorphic.Type(Int),
  bindings: dict.Dict(Int, Binding),
) -> isomorphic.Type(Int)
Search Document