SIRUnify

scalus.sir.SIRUnify
object SIRUnify

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
SIRUnify.type

Members list

Type members

Classlikes

case class Env(path: List[String], filledTypes: Map[TypeVar, SIRType], eqTypes: Map[TypeVar, SIRType], parentTypes: Map[SIRType, Set[SIRType]], debug: Boolean)

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
object Env

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type
Env.type
object TypeVarSyntaxUnify extends Unify[TypeVar]

Attributes

Supertypes
trait Unify[TypeVar]
class Object
trait Matchable
class Any
Self type
case class UnificationFailure[S](path: List[String], left: S, right: S) extends UnificationResult[Nothing]

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
trait UnificationResult[Nothing]
class Object
trait Matchable
class Any
Show all

Attributes

Companion
trait
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type
sealed trait UnificationResult[+T]

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
Known subtypes
case class UnificationSuccess[T](env: Env, unificator: T) extends UnificationResult[T]

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
object Unify

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
Unify.type
trait Unify[T]

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
Known subtypes

Attributes

Supertypes
trait Unify[Binding]
class Object
trait Matchable
class Any
Self type
object given_Unify_Case extends Unify[Case]

Attributes

Supertypes
trait Unify[Case]
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
trait Unify[ConstrDecl]
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
trait Unify[DataDecl]
class Object
trait Matchable
class Any
Self type
object given_Unify_Decl extends Unify[Decl]

Attributes

Supertypes
trait Unify[Decl]
class Object
trait Matchable
class Any
Self type
object given_Unify_SIR extends Unify[SIR]

Unify two SIR expressions. Annotations are ignored during unification and can be different.

Unify two SIR expressions. Annotations are ignored during unification and can be different.

Attributes

Supertypes
trait Unify[SIR]
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
trait Unify[SIRType]
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Value members

Concrete methods

def unifyCase(left: Case, right: Case, env: Env): UnificationResult[Case]
def unifyCases(left: List[Case], right: List[Case], env: Env): UnificationResult[List[Case]]
def unifyDecl(left: Decl, right: Decl, env: Env): UnificationResult[Decl]
def unifyList[T](left: List[T], right: List[T], env: Env)(using Unify[T]): UnificationResult[List[T]]
def unifySIR(left: SIR, right: SIR, env: Env): UnificationResult[SIR]
def unifySIRExpr(left: SIR, right: SIR, env: Env): UnificationResult[SIR]
def unifyType(left: SIRType, right: SIRType, env: Env): UnificationResult[SIRType]

Givens

Givens

Unify two SIR expressions. Annotations are ignored during unification and can be different.

Unify two SIR expressions. Annotations are ignored during unification and can be different.

Attributes

Extensions

Extensions

extension [T](left: T)(implicit evidence$1: Unify[T])
def ~~=~~: Boolean