Categorías
Austra

Lambdas sobre operadores binarios

Esta es una pequeña mejora al lenguaje de Austra. Supongamos que queremos sumar los números del 1 al 100. Creamos una secuencia de enteros y le aplicamos el método reduce:

iseq(1, 100).reduce(0, (x, y) => x + y) 

En realidad, nos bastaría llamar a sum, pero el ejemplo me interesa por el uso de la función lambda.

El caso es que ahora podemos escribirlo así:

iseq(1, 100).reduce(0, int::+) 

El truco es sencillo, y Java lo usa a manos llenas al manejar streams. De momento, sólo he activado la equivalencia para operadores binarios, pero si encuentro más casos útiles, puedo ampliarla. Hay que tener presente que Austra ya permite declarar funciones con parámetros lambda arbitrarios. Que no haya un método en la librería que utilice determinado patrón de función, no quiere decir que el usuario no pueda usarlo por su cuenta.