orc.type
Class Type
java.lang.Object
orc.type.Type
- Direct Known Subclasses:
- ArrowType, BooleanType, Bot, DotType, EllipsisArrowType, LetType, Message, MultiType, NumberType, StringType, Top, TupleType, Tycon, TypeApplication, TypeVariable
public abstract class Type
- extends java.lang.Object
Abstract superclass of all types for the Orc typechecker.
This typechecker is based on the local type inference algorithms
described by Benjamin Pierce and David Turner in their paper
entitled "Local Type Inference".
It extends that inference strategy with tuples, library-defined
type constructors, user-defined datatypes, variance annotations,
and other small changes.
- Author:
- dkitchin
Constructor Summary |
Type()
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
TOP
public static final Type TOP
BOT
public static final Type BOT
NUMBER
public static final Type NUMBER
STRING
public static final Type STRING
BOOLEAN
public static final Type BOOLEAN
INTEGER
public static final Type INTEGER
LET
public static final Type LET
BLANK
public static final Type BLANK
Type
public Type()
isTop
public boolean isTop()
isBot
public boolean isBot()
subtype
public boolean subtype(Type that)
assertSubtype
public void assertSubtype(Type that)
throws SubtypeFailureException
- Throws:
SubtypeFailureException
supertype
public boolean supertype(Type that)
equal
public boolean equal(Type that)
join
public Type join(Type that)
meet
public Type meet(Type that)
call
public Type call(Env<Type> ctx,
Env<Type> typectx,
java.util.List<Arg> args,
java.util.List<Type> typeActuals)
throws TypeException
- Throws:
TypeException
call
public Type call(java.util.List<Type> args)
throws TypeException
- Throws:
TypeException
toString
public java.lang.String toString()
- Overrides:
toString
in class java.lang.Object
subst
public Type subst(Env<Type> ctx)
substAll
public static java.util.List<Type> substAll(java.util.List<Type> ts,
Env<Type> ctx)
variances
public java.util.List<Variance> variances()
makeCallableInstance
public Type makeCallableInstance(java.util.List<Type> params)
throws TypeException
- Throws:
TypeException
unwrapAs
public Type unwrapAs(Type T)
throws TypeException
- Throws:
TypeException
freeVars
public java.util.Set<java.lang.Integer> freeVars()
closed
public boolean closed()
findVariance
public Variance findVariance(java.lang.Integer var)
promote
public Type promote(Env<java.lang.Boolean> V)
throws TypeException
- Throws:
TypeException
demote
public Type demote(Env<java.lang.Boolean> V)
throws TypeException
- Throws:
TypeException
addConstraints
public void addConstraints(Env<java.lang.Boolean> VX,
Type T,
Constraint[] C)
throws TypeException
- Throws:
TypeException