@@ -320,14 +320,15 @@ object Expr:
320320 assert(strs.nonEmpty, " concatWith requires at least one argument" )
321321 StrConcatSeparator (sep, strs.head, strs.tail)
322322
323- extension [A ](x : Expr [List [A ], NonScalarExpr ])(using ResultTag [List [A ]])
323+ extension [A ](x : Expr [List [A ], NonScalarExpr ])(using ResultTag [A ], ResultTag [ List [A ]])
324324 def prepend (elem : Expr [A , NonScalarExpr ]): Expr [List [A ], NonScalarExpr ] = ListPrepend (elem, x)
325325 def append (elem : Expr [A , NonScalarExpr ]): Expr [List [A ], NonScalarExpr ] = ListAppend (x, elem)
326326 // XXX Due to Scala overloading bugs, there can be no two extensions methods named `contains` with similar arguments.
327327 // XXX Because the list one is less used, this one is called `containsElement` instead.
328328 def containsElement (elem : Expr [A , NonScalarExpr ]): Expr [Boolean , NonScalarExpr ] = ListContains (x, elem)
329329 def length : Expr [Int , NonScalarExpr ] = ListLength (x)
330330 def ++ (other : Expr [List [A ], NonScalarExpr ]): Expr [List [A ], NonScalarExpr ] = ListConcat (x, other)
331+ def apply (i : Expr [Int , NonScalarExpr ]): Expr [A , NonScalarExpr ] = ListGet (x, Expr .Plus (i, Expr .IntLit (1 )))
331332
332333 // Aggregations
333334 def sum [T : ResultTag : Numeric ](x : Expr [T , ? ]): AggregationExpr [T ] = AggregationExpr .Sum (x)
@@ -524,6 +525,8 @@ object Expr:
524525 case class ListContains [A ]($list : Expr [List [A ], NonScalarExpr ], $x : Expr [A , NonScalarExpr ])(using ResultTag [Boolean ])
525526 extends Expr [Boolean , NonScalarExpr ]
526527 case class ListLength [A ]($list : Expr [List [A ], NonScalarExpr ])(using ResultTag [Int ]) extends Expr [Int , NonScalarExpr ]
528+ case class ListGet [A ]($list : Expr [List [A ], NonScalarExpr ], $i : Expr [Int , NonScalarExpr ])(using ResultTag [A ])
529+ extends Expr [A , NonScalarExpr ]
527530 case class ListConcat [A ]
528531 ($xs : Expr [List [A ], NonScalarExpr ], $ys : Expr [List [A ], NonScalarExpr ])
529532 (using ResultTag [List [A ]])
0 commit comments