Class ListFunctions

java.lang.Object
com.pervasive.datarush.functions.ListFunctions

public class ListFunctions extends Object
Provides implementations of common List functions. These functions can be combined to construct more complex expressions.

These functions accept list objects as input parameters.

  • Constructor Details

    • ListFunctions

      public ListFunctions()
  • Method Details

    • listConcat

      public static ScalarValuedFunction listConcat(String leftField, String rightField)
      Builds an expression concatenating the values of the two specified fields. The specified fields must be of type Object<List.class> The result type is Object<List.class> If both values are null, the result is null.
      Parameters:
      leftField - the record field value on the left side of concatenation
      rightField - the record field value on the right side of concatenation
      Returns:
      a function evaluating the expression
    • listConcat

      public static ScalarValuedFunction listConcat(String leftField, List<Object> rightValue)
      Builds an expression concatenating a constant to the value of the specified field. The specified fields must be of type Object<List.class> The result type is Object<List.class> If both values are null, the result is null.
      Parameters:
      leftField - the record field value on the left side of concatenation
      rightValue - the constant value on the right side of concatenation
      Returns:
      a function evaluating the expression
    • listConcat

      public static ScalarValuedFunction listConcat(String leftField, ScalarValuedFunction rightExpr)
      Builds an expression concatenating the value of a specified field and subexpression. The specified field and subexpression must be of type Object<List.class> The result type is Object<List.class> If both values are null, the result is null.
      Parameters:
      leftField - the record field value on the left side of concatenation
      rightExpr - an expression on the right side of concatenation
      Returns:
      a function evaluating the expression
    • listConcat

      public static ScalarValuedFunction listConcat(List<Object> leftValue, String rightField)
      Builds an expression concatenating a constant to the value of the specified field. The specified field and subexpression must be of type Object<List.class> The result type is Object<List.class> If both values are null, the result is null.
      Parameters:
      leftValue - the constant value on the left side of concatenation
      rightField - the record field value on the right side of concatenation
      Returns:
      a function evaluating the expression
    • listConcat

      public static ScalarValuedFunction listConcat(List<Object> leftValue, ScalarValuedFunction rightExpr)
      Builds an expression concatenating a the value of the specified field and subexpression. The specified field and subexpression must be of type Object<List.class> The result type is Object<List.class> If both values are null, the result is null.
      Parameters:
      leftValue - the constant value on the left side of concatenation
      rightExpr - an expression on the right side of concatenation
      Returns:
      a function evaluating the expression
    • listConcat

      public static ScalarValuedFunction listConcat(ScalarValuedFunction leftExpr, String rightField)
      Builds an expression concatenating a the value of the specified field and subexpression. The specified field and subexpression must be of type Object<List.class> The result type is Object<List.class> If both values are null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of concatenation
      rightField - the record field value on the right side of concatenation
      Returns:
      a function evaluating the expression
    • listConcat

      public static ScalarValuedFunction listConcat(ScalarValuedFunction leftExpr, List<Object> rightValue)
      Builds an expression concatenating a constant to the value of the specified subexpression. The specified field and subexpression must be of type Object<List.class> The result type is Object<List.class> If both evaluate to null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of concatenation
      rightValue - the constant value on the right side of concatenation
      Returns:
      a function evaluating the expression
    • listConcat

      public static ScalarValuedFunction listConcat(ScalarValuedFunction leftExpr, ScalarValuedFunction rightExpr)
      Builds an expression concatenating the values of the two specified subexpressions. The specified field and subexpression must be of type Object<List.class> The result will be of type Object<List.class> If both expressions evaluate to null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of concatenation
      rightExpr - an expression on the right side of concatenation
      Returns:
      a function evaluating the expression
    • listGet

      public static ScalarValuedFunction listGet(String leftField, String rightField)
      Builds an expression to get the value at a particular index from specified field. The specified field must be of type Object<List.class> The result will be of type Object. If the field value is null, the result is null.
      Parameters:
      leftField - the record field value on the left side of listGet
      rightField - the record field value on the right side of listGet
      Returns:
      a function evaluating the expression
    • listGet

      public static ScalarValuedFunction listGet(String leftField, int rightValue)
      Builds an expression to get the value at a particular index from specified field. The specified field must be of type Object<List.class> The result will be of type Object. If the field value is null, the result is null.
      Parameters:
      leftField - the record field value on the left side of listGet
      rightValue - the constant value on the right side of listGet
      Returns:
      a function evaluating the expression
    • listGet

      public static ScalarValuedFunction listGet(String leftField, ScalarValuedFunction rightExpr)
      Builds an expression to get the value at a particular index from specified field. The specified field must be of type Object<List.class> The result will be of type Object. If the field value is null, the result is null.
      Parameters:
      leftField - the record field value on the left side of listGet
      rightExpr - an expression on the right side of listGet
      Returns:
      a function evaluating the expression
    • listGet

      public static ScalarValuedFunction listGet(List<Object> leftValue, String rightField)
      Builds an expression to get the value at a particular index from specified field. The specified field must be of type Object<List.class> The result will be of type Object. If the field value is null, the result is null.
      Parameters:
      leftValue - the constant value on the left side of listGet
      rightField - the record field value on the right side of listGet
      Returns:
      a function evaluating the expression
    • listGet

      public static ScalarValuedFunction listGet(List<Object> leftValue, ScalarValuedFunction rightExpr)
      Builds an expression to get the value at a particular index from specified field. The specified field must be of type Object<List.class> The result will be of type Object. If the field value is null, the result is null.
      Parameters:
      leftValue - the constant value on the left side of listGet
      rightExpr - an expression on the right side of listGet
      Returns:
      a function evaluating the expression
    • listGet

      public static ScalarValuedFunction listGet(ScalarValuedFunction leftExpr, String rightField)
      Builds an expression to get the value at a particular index from specified field. The specified field must be of type Object<List.class> The result will be of type Object. If the field value is null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of listGet
      rightField - the record field value on the right side of listGet
      Returns:
      a function evaluating the expression
    • listGet

      public static ScalarValuedFunction listGet(ScalarValuedFunction leftExpr, int rightValue)
      Builds an expression to get the value at a particular index from specified field. The specified field must be of type Object<List.class> The result will be of type Object. If the field value is null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of listGet
      rightValue - the constant value on the right side of listGet
      Returns:
      a function evaluating the expression
    • listGet

      public static ScalarValuedFunction listGet(ScalarValuedFunction leftExpr, ScalarValuedFunction rightExpr)
      Builds an expression to get the value at a particular index from specified expression. The specified expression must evaluate to Object<List.class> The result will be of type Object. If an expression evaluates to null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of listGet
      rightExpr - an expression on the right side of listGet
      Returns:
      a function evaluating the expression
    • listSize

      public static ScalarValuedFunction listSize(String field)
      Builds an expression to get the number of elements in specified field. The specified field must be of type Object<List.class> The result will be of type integer. If the field value is null, the result is null.
      Parameters:
      field - the record field value
      Returns:
      a function evaluating the expression
    • listSize

      public static ScalarValuedFunction listSize(ScalarValuedFunction expr)
      Builds an expression to get the number of elements in specified ScalarValuedFunction expression. The specified expression must evaluate to Object<List.class> The result will be of type integer. If an expression evaluates to null, the result is null.
      Parameters:
      expr - the ScalarValuedFunction expression
      Returns:
      a function evaluating the expression
    • listToString

      public static ScalarValuedFunction listToString(String field)
      Builds an expression to get the string representation of a specified field. The specified field must be of type Object<List.class> The result will be of type String. If the field value is null, the result is null.
      Parameters:
      field - the record field value
      Returns:
      a function evaluating the expression
    • listToString

      public static ScalarValuedFunction listToString(ScalarValuedFunction expr)
      Builds an expression to get the string representation of a ScalarValuedFunction. The specified expression must evaluate to Object<List.class> The result will be of type String. If an expression evaluates to null, the result is null.
      Parameters:
      expr - the ScalarValuedFunction expression
      Returns:
      a function evaluating the expression
    • listContains

      public static ScalarValuedFunction listContains(String leftField, String rightField)
      Builds an expression to check if a field contains a value specified by the other field. Left operand must be of type Object<List.class> and right operand must be a contained value. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      leftField - the record field value on the left side of listContains
      rightField - the record field value on the right side of listContains
      Returns:
      a function evaluating the expression
    • listContains

      public static ScalarValuedFunction listContains(String field, List<Object> value)
      Builds an expression to check if a field contains a value specified by an expression. Left operand must be of type Object<List.class> and right operand must be a contained value. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      field - the record field value on the left side of listContains
      value - the constant value on the right side of listContains
      Returns:
      a function evaluating the expression
    • listContains

      public static ScalarValuedFunction listContains(String leftField, ScalarValuedFunction rightExpr)
      Builds an expression to check if a field contains a value specified by an expression. Left operand must be of type Object<List.class> and right operand must be a contained value. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      leftField - the record field value on the left side of listContains
      rightExpr - an expression on the right side of listContains
      Returns:
      a function evaluating the expression
    • listContains

      public static ScalarValuedFunction listContains(List<Object> leftValue, String rightField)
      Builds an expression to check if a constant contains a value specified by other field. Left operand must be of type Object<List.class> and right operand must be a contained value. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      leftValue - the constant value on the left side of listContains
      rightField - the record field value on the right side of listContains
      Returns:
      a function evaluating the expression
    • listContains

      public static ScalarValuedFunction listContains(List<Object> leftValue, ScalarValuedFunction rightExpr)
      Builds an expression to check if a constant contains a value specified by an expression. Left operand must be of type Object<List.class> and right operand must be a contained value. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      leftValue - the constant value on the left side of listContains
      rightExpr - an expression on the right side of listContains
      Returns:
      a function evaluating the expression
    • listContains

      public static ScalarValuedFunction listContains(ScalarValuedFunction leftExpr, String rightField)
      Builds an expression to check if an expression contains a value specified by a field. Left operand must be of type Object<List.class> and right operand must be a contained value. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of listContains
      rightField - the record field value on the right side of listContains
      Returns:
      a function evaluating the expression
    • listContains

      public static ScalarValuedFunction listContains(ScalarValuedFunction expr, List<Object> value)
      Builds an expression to check if an expression contains a value specified by a field. Left operand must be of type Object<List.class> and right operand must be a contained value. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      expr - an expression on the left side of listContains
      value - the constant value on the right side of listContains
      Returns:
      a function evaluating the expression
    • listContains

      public static ScalarValuedFunction listContains(ScalarValuedFunction leftExpr, ScalarValuedFunction rightExpr)
      Builds an expression to check if an expression contains a value specified by a ScalarValuedFunction. Left operand must be of type Object<List.class> and right operand must be a contained value. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of listContains
      rightExpr - an expression on the right side of listContains
      Returns:
      a function evaluating the expression
    • listContainsAll

      public static ScalarValuedFunction listContainsAll(String leftField, String rightField)
      Builds an expression to check if a field contains a value specified by the other field. Both operands must be of type Object<List.class>. The result type is BOOLEAN. If the field representing a list is null, the result is null.
      Parameters:
      leftField - the record field value on the left side of listContainsAll
      rightField - the record field value on the right side of listContainsAll
      Returns:
      a function evaluating the expression
    • listContainsAll

      public static ScalarValuedFunction listContainsAll(String field, List<Object> value)
      Builds an expression to check if a field contains a value specified by an expression. Both operands must be of type Object<List.class>. The result type is BOOLEAN. If the field representing a list is null, the result is null.
      Parameters:
      field - the record field value on the left side of listContainsAll
      value - the constant value on the right side of listContainsAll
      Returns:
      a function evaluating the expression
    • listContainsAll

      public static ScalarValuedFunction listContainsAll(String leftField, ScalarValuedFunction rightExpr)
      Builds an expression to check if a field contains a value specified by an expression. Both operands must be of type Object<List.class>. The result type is BOOLEAN. If the field representing a list is null, the result is null.
      Parameters:
      leftField - the record field value on the left side of listContainsAll
      rightExpr - an expression on the right side of listContainsAll
      Returns:
      a function evaluating the expression
    • listContainsAll

      public static ScalarValuedFunction listContainsAll(List<Object> leftValue, String rightField)
      Builds an expression to check if a constant contains a value specified by other field. Both operands must be of type Object<List.class>. The result type is BOOLEAN. If the constant representing a list is null, the result is null.
      Parameters:
      leftValue - the constant value on the left side of listContainsAll
      rightField - the record field value on the right side of listContainsAll
      Returns:
      a function evaluating the expression
    • listContainsAll

      public static ScalarValuedFunction listContainsAll(List<Object> leftValue, ScalarValuedFunction rightExpr)
      Builds an expression to check if a constant contains a value specified by an expression. Both operands must be of type Object<List.class>. The result type is BOOLEAN. If the constant representing a list is null, the result is null.
      Parameters:
      leftValue - the constant value on the left side of listContainsAll
      rightExpr - an expression on the right side of listContainsAll
      Returns:
      a function evaluating the expression
    • listContainsAll

      public static ScalarValuedFunction listContainsAll(ScalarValuedFunction leftExpr, String rightField)
      Builds an expression to check if an expression contains a value specified by a field. Both operands must be of type Object<List.class>. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of listContainsAll
      rightField - the record field value on the right side of listContainsAll
      Returns:
      a function evaluating the expression
    • listContainsAll

      public static ScalarValuedFunction listContainsAll(ScalarValuedFunction expr, List<Object> value)
      Builds an expression to check if an expression contains a value specified by a field. Both operands must be of type Object<List.class>. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      expr - an expression on the left side of listContainsAll
      value - the constant value on the right side of listContainsAll
      Returns:
      a function evaluating the expression
    • listContainsAll

      public static ScalarValuedFunction listContainsAll(ScalarValuedFunction leftExpr, ScalarValuedFunction rightExpr)
      Builds an expression to check if an expression contains a value specified by a ScalarValuedFunction. Both operands must be of type Object<List.class>. The result type is BOOLEAN. If an expression representing a list evaluates to null, the result is null.
      Parameters:
      leftExpr - an expression on the left side of listContainsAll
      rightExpr - an expression on the right side of listContainsAll
      Returns:
      a function evaluating the expression
    • listDistinct

      public static ScalarValuedFunction listDistinct(String field)
      Builds an expression to get distinct set of elements from a specified field. The specified field must be of type Object<List.class> The result will be of type Object<List.class> If the field is null, the result is null.
      Parameters:
      field - the record field value
      Returns:
      a function evaluating the expression
    • listDistinct

      public static ScalarValuedFunction listDistinct(ScalarValuedFunction expr)
      Builds an expression to get distinct set of elements from a ScalarValuedFunction. The specified expression must evaluate to Object<List.class> The result will be of type Object<List.class> If an expression evaluates to null, the result is null.
      Parameters:
      expr - the ScalarValuedFunction expression
      Returns:
      a function evaluating the expression
    • listReverse

      public static ScalarValuedFunction listReverse(String field)
      Builds an expression to reverse the order of the elements in the specified field. The specified field must be of type Object<List.class> The result will be of type Object<List.class> If the field is null, the result is null.
      Parameters:
      field - the record field value
      Returns:
      a function evaluating the expression
    • listReverse

      public static ScalarValuedFunction listReverse(ScalarValuedFunction expr)
      Builds an expression to reverse the order of the elements in the specified expression. The specified expression must evaluate to Object<List.class> The result will be of type Object<List.class> If an expression evaluates to null, the result is null.
      Parameters:
      expr - the ScalarValuedFunction expression
      Returns:
      a function evaluating the expression
    • listSort

      public static ScalarValuedFunction listSort(String leftField, String rightField)
      Builds an expression to sort elements of a field as specified by the other. Operands must be of type Object<List.class> and String respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. If the field for sort order is null, elements are sorted in ASCENDING order.
      Parameters:
      leftField - the record field value on the left side of sort
      rightField - the record field value on the right side of sort
      Returns:
      a function evaluating the expression
    • listSort

      public static ScalarValuedFunction listSort(String leftField, ScalarValuedFunction rightExpr)
      Builds an expression to sort elements of a field as specified by a ScalarValuedFunction. Operands must evaluate to Object<List.class> and String respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. If an expression for sort order evaluates to null, elements are sorted in ASCENDING order.
      Parameters:
      leftField - the record field value on the left side of sort
      rightExpr - the ScalarValuedFunction expression on the right side of sort
      Returns:
      a function evaluating the expression
    • listSort

      public static ScalarValuedFunction listSort(List<Object> leftValue, String rightField)
      Builds an expression to sort elements of a constant as specified by the other. Operands must be of type Object<List.class> and String respectively. The result is of type Object<List.class> If the constant representing a list evaluates to null, the result is null. If the field for sort order is null, elements are sorted in ASCENDING order.
      Parameters:
      leftValue - the constant value on the left side of sort
      rightField - the record field value on the right side of sort
      Returns:
      a function evaluating the expression
    • listSort

      public static ScalarValuedFunction listSort(List<Object> leftValue, ScalarValuedFunction rightExpr)
      Builds an expression to sort elements of a constant as specified by a ScalarValuedFunction. Operands must be of type Object<List.class> and String respectively. The result is of type Object<List.class> If the constant representing a list evaluates to null, the result is null. If an expression for sort order is null, elements are sorted in ASCENDING order.
      Parameters:
      leftValue - the constant value on the left side of sort
      rightExpr - the ScalarValuedFunction expression on the right side of sort
      Returns:
      a function evaluating the expression
    • listSort

      public static ScalarValuedFunction listSort(ScalarValuedFunction leftExpr, String rightField)
      Builds an expression to sort elements of a ScalarValuedFunction as specified by a field. Operands must evaluate to Object<List.class> and String respectively. The result is of type Object<List.class> If an expression representing a list evaluates to null, the result is null. If the field for sort order is null, elements are sorted in ASCENDING order.
      Parameters:
      leftExpr - the ScalarValuedFunction expression on the left side of sort
      rightField - the record field value on the right side of sort
      Returns:
      a function evaluating the expression
    • listSort

      public static ScalarValuedFunction listSort(ScalarValuedFunction leftExpr, ScalarValuedFunction rightExpr)
      Builds an expression to sort elements of a ScalarValuedFunction as specified by the other. Operands must evaluate to Object<List.class> and String respectively. The result is of type Object<List.class> If an expression representing a list evaluates to null, the result is null. If an expression for sort order is null, elements are sorted in ASCENDING order.
      Parameters:
      leftExpr - the ScalarValuedFunction on the left side of sort
      rightExpr - the ScalarValuedFunction on the right side of sort
      Returns:
      a function evaluating the expression
    • subList

      public static ScalarValuedFunction subList(String field, String fromIndexField, String toIndexField)
      Builds an expression finding a view of the portion of the field between the specified fromIndex, inclusive, and toIndex, exclusive. Operands must be of type Object<List.class>, integer and integer respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. fromIndex and toIndex should never be null.
      Parameters:
      field - the record field value
      fromIndexField - the record field value representing low endpoint (inclusive) of the subList
      toIndexField - the record field value representing high endpoint (exclusive) of the subList
      Returns:
      a function evaluating the expression
    • subList

      public static ScalarValuedFunction subList(String field, int fromIndexValue, int toIndexValue)
      Builds an expression finding a view of the portion of the field between the specified fromIndex, inclusive, and toIndex, exclusive. Operands must be of type Object<List.class>, integer and integer respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. fromIndex and toIndex should never be null.
      Parameters:
      field - the record field value
      fromIndexValue - the constant value representing low endpoint (inclusive) of the subList
      toIndexValue - the constant value representing high endpoint (exclusive) of the subList
      Returns:
      a function evaluating the expression
    • subList

      public static ScalarValuedFunction subList(String field, ScalarValuedFunction fromIndexExpr, ScalarValuedFunction toIndexExpr)
      Builds an expression finding a view of the portion of the field between the specified fromIndex, inclusive, and toIndex, exclusive. Operands must be of type Object<List.class>, integer and integer respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. fromIndex and toIndex should never be null.
      Parameters:
      field - the record field value
      fromIndexExpr - an expression representing low endpoint (inclusive) of the subList
      toIndexExpr - an expression representing high endpoint (exclusive) of the subList
      Returns:
      a function evaluating the expression
    • subList

      public static ScalarValuedFunction subList(List<Object> value, String fromIndexField, String toIndexField)
      Builds an expression finding a view of the portion of the field between the specified fromIndex, inclusive, and toIndex, exclusive. Operands must be of type Object<List.class>, integer and integer respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. fromIndex and toIndex should never be null.
      Parameters:
      value - the constant value
      fromIndexField - the record field value representing low endpoint (inclusive) of the subList
      toIndexField - the record field value representing high endpoint (exclusive) of the subList
      Returns:
      a function evaluating the expression
    • subList

      public static ScalarValuedFunction subList(List<Object> value, ScalarValuedFunction fromIndexExpr, ScalarValuedFunction toIndexExpr)
      Builds an expression finding a view of the portion of the field between the specified fromIndex, inclusive, and toIndex, exclusive. Operands must be of type Object<List.class>, integer and integer respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. fromIndex and toIndex should never be null.
      Parameters:
      value - the constant value
      fromIndexExpr - an expression representing low endpoint (inclusive) of the subList
      toIndexExpr - an expression representing high endpoint (exclusive) of the subList
      Returns:
      a function evaluating the expression
    • subList

      public static ScalarValuedFunction subList(ScalarValuedFunction expr, String fromIndexField, String toIndexField)
      Builds an expression finding a view of the portion of the field between the specified fromIndex, inclusive, and toIndex, exclusive. Operands must be of type Object<List.class>, integer and integer respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. fromIndex and toIndex should never be null.
      Parameters:
      expr - a ScalarValuedFunction expression
      fromIndexField - the record field value representing low endpoint (inclusive) of the subList
      toIndexField - the record field value representing high endpoint (exclusive) of the subList
      Returns:
      a function evaluating the expression
    • subList

      public static ScalarValuedFunction subList(ScalarValuedFunction expr, int fromIndexValue, int toIndexValue)
      Builds an expression finding a view of the portion of the field between the specified fromIndex, inclusive, and toIndex, exclusive. Operands must be of type Object<List.class>, integer and integer respectively. The result is of type Object<List.class> If the field representing a list is null, the result is null. fromIndex and toIndex should never be null.
      Parameters:
      expr - a ScalarValuedFunction expression
      fromIndexValue - the constant value representing low endpoint (inclusive) of the subList
      toIndexValue - the constant value representing high endpoint (exclusive) of the subList
      Returns:
      a function evaluating the expression
    • subList

      public static ScalarValuedFunction subList(ScalarValuedFunction expr, ScalarValuedFunction fromIndexExpr, ScalarValuedFunction toIndexExpr)
      Builds an expression finding a view of the portion of a ScalarValuedFunction between the specified fromIndex, inclusive, and toIndex, exclusive. Operands must evaluate to Object<List.class>, integer and integer respectively. The result is of type Object<List.class> If an expression representing a list evaluates to null, the result is null. fromIndex and toIndex should never be null.
      Parameters:
      expr - the ScalarValuedFunction expression
      fromIndexExpr - an expression representing low endpoint (inclusive) of the subList
      toIndexExpr - an expression representing high endpoint (exclusive) of the subList
      Returns:
      a function evaluating the expression