Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

mlsub.typing
Class MonotypeConstructor  view MonotypeConstructor download MonotypeConstructor.java

java.lang.Object
  extended bymlsub.typing.Monotype
      extended bymlsub.typing.MonotypeConstructor
All Implemented Interfaces:
mlsub.typing.lowlevel.Element

public final class MonotypeConstructor
extends Monotype

A monotype, build by application of a type constructor to type parameters.


Field Summary
(package private)  Monotype[] parameters
           
 TypeConstructor tc
           
 
Fields inherited from class mlsub.typing.Monotype
zeroMonotypes
 
Constructor Summary
MonotypeConstructor(TypeConstructor tc, Monotype[] parameters)
          Constructs a monotype by application of the type constructor to the type parameters.
 
Method Summary
static MonotypeConstructor apply(TypeConstructor tc, Monotype parameter)
          Constructs a monotype by application of the type constructor to one type parameter.
(package private)  Monotype canonify()
          Return the monotype this one reduces to after simplification.
 boolean equals(java.lang.Object o)
          Determine whether this Object is semantically equal to another Object.
 int getId()
          low-level interface
 mlsub.typing.lowlevel.Kind getKind()
           
 TypeConstructor getTC()
           
 Monotype[] getTP()
           
 TypeConstructor head()
          Return the head type constructor if this monotype is of a known variance, or null.
 boolean isRigid()
          Returns true if this monotype is only made of top-level, rigid type constructors
 void setId(int value)
           
 void setKind(mlsub.typing.lowlevel.Kind value)
           
(package private)  Monotype substitute(java.util.Map map)
          Perform type symbol substitution inside the monotype.
(package private)  void tag(int variance)
          Simplification
 java.lang.String toString()
          Convert this Object to a human-readable String.
 java.lang.String toString(boolean isNull, java.lang.String suffix)
          Print the monotype, using context information.
 
Methods inherited from class mlsub.typing.Monotype
canonify, domain, equivalent, isConcrete, isRigid, substitute, tag
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

tc

public TypeConstructor tc

parameters

Monotype[] parameters
Constructor Detail

MonotypeConstructor

public MonotypeConstructor(TypeConstructor tc,
                           Monotype[] parameters)
                    throws BadSizeEx
Constructs a monotype by application of the type constructor to the type parameters.

Method Detail

apply

public static MonotypeConstructor apply(TypeConstructor tc,
                                        Monotype parameter)
                                 throws BadSizeEx
Constructs a monotype by application of the type constructor to one type parameter.


head

public TypeConstructor head()
Return the head type constructor if this monotype is of a known variance, or null.

Overrides:
head in class Monotype

getTC

public TypeConstructor getTC()

getTP

public Monotype[] getTP()

isRigid

public boolean isRigid()
Returns true if this monotype is only made of top-level, rigid type constructors

Overrides:
isRigid in class Monotype

substitute

Monotype substitute(java.util.Map map)
Perform type symbol substitution inside the monotype. Does not need to create a new object, but must not imperatively modify the monotype.

Specified by:
substitute in class Monotype

getId

public int getId()
low-level interface


setId

public void setId(int value)

getKind

public mlsub.typing.lowlevel.Kind getKind()

setKind

public void setKind(mlsub.typing.lowlevel.Kind value)

equals

public boolean equals(java.lang.Object o)
Description copied from class: java.lang.Object
Determine whether this Object is semantically equal to another Object.

There are some fairly strict requirements on this method which subclasses must follow:

  • It must be transitive. If a.equals(b) and b.equals(c), then a.equals(c) must be true as well.
  • It must be symmetric. a.equals(b) and b.equals(a) must have the same value.
  • It must be reflexive. a.equals(a) must always be true.
  • It must be consistent. Whichever value a.equals(b) returns on the first invocation must be the value returned on all later invocations.
  • a.equals(null) must be false.
  • It must be consistent with hashCode(). That is, a.equals(b) must imply a.hashCode() == b.hashCode(). The reverse is not true; two objects that are not equal may have the same hashcode, but that has the potential to harm hashing performance.

This is typically overridden to throw a java.lang.ClassCastException if the argument is not comparable to the class performing the comparison, but that is not a requirement. It is legal for a.equals(b) to be true even though a.getClass() != b.getClass(). Also, it is typical to never cause a java.lang.NullPointerException.

In general, the Collections API (java.util) use the equals method rather than the == operator to compare objects. However, java.util.IdentityHashMap is an exception to this rule, for its own good reasons.

The default implementation returns this == o.


toString

public java.lang.String toString()
Description copied from class: java.lang.Object
Convert this Object to a human-readable String. There are no limits placed on how long this String should be or what it should contain. We suggest you make it as intuitive as possible to be able to place it into System.out.println() 55 and such.

It is typical, but not required, to ensure that this method never completes abruptly with a java.lang.RuntimeException.

This method will be called when performing string concatenation with this object. If the result is null, string concatenation will instead use "null".

The default implementation returns getClass().getName() + "@" + Integer.toHexString(hashCode()).


toString

public java.lang.String toString(boolean isNull,
                                 java.lang.String suffix)
Description copied from class: Monotype
Print the monotype, using context information.

Overrides:
toString in class Monotype

tag

void tag(int variance)
Simplification

Specified by:
tag in class Monotype

canonify

Monotype canonify()
Description copied from class: Monotype
Return the monotype this one reduces to after simplification.

Specified by:
canonify in class Monotype