Estoy tratando de implementar una secuencia diferida (lo que significa que el siguiente elemento solo se calcula al invocar la función de paso), y uno de los métodos que debería tener es "mapa" que recibe una función que afecta a todos los miembros. La manera más elegante de hacer esto es usar la composición de funciones y asignar la nueva función a la variable de función, pero como las funciones no son valores de primera clase en Java, no tengo idea de cómo hacerlo.Composición de funciones en Java
Pensé en tener una clase que solo contenga una función, como una especie de contenedor de "función puntero", pero no veo cómo se puede usar para la composición.
Editar: pregunta es tarea relacionada. Además, debería ser capaz de manejar múltiples composiciones a lo largo de las líneas del mapa (map (map (stepFunction()))) ("map" en este caso es la función dada a través del método "map").
Entonces, cuando dice que quiere hacer un mapa (mapa (mapa (stepFunction()))), ¿eso significa que tiene una lista de listas y desea llamar a stepFunction en cada elemento de todas las listas de niños en esa jerarquía? Todavía no estoy del todo claro sobre lo que estás tratando de lograr. –
No. Básicamente este es el trato: solo tengo tres cosas en un momento dado: la función de paso, el valor actual y el valor base. Si Seq.map (someFunctionToMapWith) nunca se aplicó, entonces current value = base value = stepFunction (valor base anterior). Sin embargo, una vez que se aplica el mapa a la secuencia, cada vez que invoco a seq.tail() para cambiar el valor actual, primero cambio el valor base y lo mudo más usando la función que se me dio: curr = mapFunc (stepFunc (valor base))) (el valor base también se actualiza). Si el mapa fue invocado varias veces, debe ser un mapa (mapa (.. map (stepFunc (base value)) ..)). – EpsilonVector