Interface Type

All Known Subinterfaces:
NamedType, RecordLikeType
All Known Implementing Classes:
BaseType, DataType, DummyType, FnType, ForallType, ListType, ParameterizedType, PrimitiveType, ProgressiveRecordType, RecordType, TupleType, TypeVar

public interface Type
Type.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    Structural identifier of a type.
  • Method Summary

    Modifier and Type
    Method
    Description
    <R> R
    accept(TypeVisitor<R> typeVisitor)
     
    copy(TypeSystem typeSystem, UnaryOperator<Type> transform)
    Copies this type, applying a given transform to component types, and returning the original type if the component types are unchanged.
    default boolean
    Returns whether this type is progressive.
    key()
    Description of the type, e.g.
    default String
    Key of the type.
    op()
    Type operator.
    default Type
    substitute(TypeSystem typeSystem, List<? extends Type> types)
    Returns a copy of this type, specialized by substituting type parameters.
  • Method Details

    • key

      Type.Key key()
      Description of the type, e.g. "int", "int -> int", "NONE | SOME of 'a".
    • moniker

      default String moniker()
      Key of the type.

      Often the same as key(), but an exception is datatype. For example, datatype "'a option" has moniker and name "option" and description "NONE | SOME of 'a".

      Use the description if you are looking for a type that is structurally equivalent. Use the moniker to identify it when printing.

    • op

      Op op()
      Type operator.
    • copy

      Type copy(TypeSystem typeSystem, UnaryOperator<Type> transform)
      Copies this type, applying a given transform to component types, and returning the original type if the component types are unchanged.
    • accept

      <R> R accept(TypeVisitor<R> typeVisitor)
    • substitute

      default Type substitute(TypeSystem typeSystem, List<? extends Type> types)
      Returns a copy of this type, specialized by substituting type parameters.
    • isProgressive

      default boolean isProgressive()
      Returns whether this type is progressive.

      Progressive types are records, but can have additional fields each time you look.

      The "file" value is an example.