Class Lambda

java.lang.Object
nz.org.riskscape.rl.ast.Lambda
All Implemented Interfaces:
Expression

public class Lambda extends Object

A lambda expression in the RiskScape language is a self-contained expression that can be applied to a list of arguments. A lambda expression can be in the form: ( [ARG1[, ARGn]] ) -> EXPRESSION or ARG -> EXPRESSION for a one-arg lambda.

A classic example for the use of a lambda function is for applying a mapping operation to a list - this can be expressed with a lambda expression like so: map([1, 2, 3, 4], element -> element * 2).

  • Constructor Details

  • Method Details

    • getBoundary

      public Optional<Pair<Token,Token>> getBoundary()
      Returns:
      a pair of tokens that represent the start and end of this expression, to be used when giving users information about where errors have occurred. If the expression has been rebuilt then the boundary may be empty or it may be from the original expression. Intended for use in problems to trace errors back to their source.
    • accept

      public <T, R> R accept(ExpressionVisitor<T,R> visitor, T data)
    • appendSource

      protected void appendSource(StringBuilder appendTo)

      Implementers extend this to append their source to the given string builder. Done via string builder to encourage a more efficient implementation than is possible with concatenating multiple toString calls that typically contruct a string builder anyway.

    • equals

      public boolean equals(Object o)
    • canEqual

      protected boolean canEqual(Object other)
    • hashCode

      public int hashCode()
    • getLeft

      public Token getLeft()
    • getArguments

      public List<Token> getArguments()

      Names of the arguments as given in the source

    • getExpression

      public Expression getExpression()

      The expression to be evaluated, scoped to the list of arguments

    • toString

      public final String toString()
      Overrides:
      toString in class Object
      Returns:
      the source, surrounded by the class name to make it easier to discern from a plane string among other debug output
    • toSource

      public final String toSource()
      Specified by:
      toSource in interface Expression
      Returns:
      a normalized version of the AST that can be parsed to be exactly the same AST as this