Class LambdaType

java.lang.Object
nz.org.riskscape.engine.types.LambdaType
All Implemented Interfaces:
Type

public class LambdaType extends Object implements Type

Represents a lambda expression in an unrealized function's type signature.

  • Field Details

  • Constructor Details

    • LambdaType

      public LambdaType(List<String> argIdentifiers)
    • LambdaType

      public LambdaType(String... argIdentifiers)
  • Method Details

    • create

      public static LambdaType create(Lambda lambda)

      Create a type that matches a Lambda expression.

    • scoped

      public ScopedLambdaType scoped(Struct scopeType)
      Returns:
      a scoped version of a LambdaType that remembers the arity and the scope that was closed over when the expression was realized
    • coerce

      public Object coerce(Object value) throws CoercionException
      Description copied from interface: Type

      Attempt to convert the given value in to one represented by this type.

      Specified by:
      coerce in interface Type
      Parameters:
      value - The value to coerce
      Returns:
      A value that conforms to this type
      Throws:
      CoercionException - if the given object can not be converted to something represented by this type
    • internalType

      public Class<?> internalType()
      Description copied from interface: Type

      The underlying java class used to represent this type.

      Specified by:
      internalType in interface Type
    • asStruct

      public Struct asStruct()
      Specified by:
      asStruct in interface Type
    • estimateSize

      public int estimateSize(Object entry)
      Description copied from interface: Type

      Estimate the number of bytes used to serialize the given value to an output stream.

      Specified by:
      estimateSize in interface Type
      Parameters:
      entry - the value of this type to measure. Must be of Type.internalType() or a ClassCastException is going to happen
      Returns:
      the estimated number of bytes, or zero if no estimation was possible.
    • toBytes

      public void toBytes(DataOutputStream os, Object toWrite) throws IOException
      Specified by:
      toBytes in interface Type
      Throws:
      IOException
    • fromBytes

      public Object fromBytes(DataInputStream in) throws IOException
      Specified by:
      fromBytes in interface Type
      Throws:
      IOException
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • visit

      public <T, U> U visit(TypeVisitor<T,U> tv, T data)
      Description copied from interface: Type

      Type specific visiting logic. Types must decide whether they are atomic or compound and call the relevant method on TypeVisitor. It's up to each compound type to decide how they want to structure their children, e.g. order, metadata, and what's considered a child or not.

      Specified by:
      visit in interface Type
    • getArgs

      public List<String> getArgs()

      The number of declared arguments