Selección de valores en una lista

Hay funciones estándar que esperan como argumento una función. Fijémonos, por ejemplo, en la función estándar List.Select, función que selecciona los valores de una lista que cumplan cierta condición. Su sintaxis es la siguiente:

List.Select(
    list as list,
    selection as function
) as list

El primer argumento es la lista a evaluar y el segundo es la condición que los valores deberán cumplir para ser seleccionados. Pero observemos en la sintaxis anterior que el parámetro selection es de tipo function (una función). De hecho, en este caso deberá ser una función que devuelva un valor booleano (true o false) para cada elemento de la lista, de forma que solo los valores para los que el resultado sea true se seleccionen.

Dicho con otras palabras, la función List.Select va a recorrer los valores de la lista aplicando la función selection a cada uno de ellos, seleccionando aquellos para los que dicha función devuelva el valor true.

Supongamos, por ejemplo, que la lista es

{-2, 0, 1, -4, 5, -2}

y que la condición es que los valores sean mayores que cero.

Una primera opción sería crear una función ya sea en el bloque let de la consulta o como función de consulta y pasarla como segundo argumento. Otra opción sería crear una función directamente dentro de la invocación a la función List.Select (es decir, como segundo argumento). Veamos ambos casos.