Supongamos que tengo una matriz de valores [a, b, c, d, ...] y una función f (x, ...) que devuelve verdadero o falso.Mejor enfoque funcional para Y a través de una lista
[1,2,3,4].map {|x| f(x)} => [true true false true]
En primer lugar, ¿cuál es la mejor manera de contraer la lista resultante en un valor verdadero o falso (a través de Y)? ¿Hay una función que me permita Mapa:
[true true false true]
a:
((true && true) && false) && true
utilizando una aplicación de pares acumulada del binario & & operador?
En este caso, el costo de evaluar la función es sustancial, por lo que me gustaría usar un estilo lisp "y" para evaluar los argumentos (aplicaciones de función) secuencialmente hasta que uno de ellos sea falso. Determinado que podría hacer:
!![1,2,3,4].each {|x| break false if !f(x) }
Cuál es ugly. Esperando que haya una manera más elegante de hacer esto. Soy consciente de que podría agregar una nueva comprensión a Array, pero con la esperanza de que haya algo incorporado que lo haga mejor. Gracias
Perdón por nitpicking, pero 'Fixnum' ya tiene métodos' even? 'Y' odd? '...;) –
@Mladen Jablanovic, Buen punto. Para este ejemplo, quería una función definida por el usuario. –