En un lenguaje de programación que es puramente funcional (como Haskell) o donde solo lo está usando de una manera funcional (por ejemplo, clojure); supongamos que tiene una lista/seq/enumerable (de tamaño desconocido) de enteros y desea generar una nueva lista/seq/enumerable que contenga las diferencias entre los elementos sucesivos, ¿cómo lo haría?¿Cómo se calcula la diferencia entre los elementos sucesivos de una lista de tamaño desconocido, funcionalmente?
Lo que hice anteriormente en C# fue doblar sobre la lista y mantener un objeto de estado como el valor agregado que grabó el elemento 'anterior' para que pueda hacer una diferencia sobre el elemento actual. La lista de resultados también tuvo que entrar en el objeto de estado (que es un problema para una lista de tamaño desconocido)
¿Cuál es el enfoque general para hacer este tipo de cosas funcionalmente?
¿Qué tipo de lista es? ¿Es una lista vinculada donde puede recorrer la lista hasta llegar a NIL? Si es así, ¿por qué no iterar desde el segundo elemento y en cada iteración guardar el valor del elemento anterior y calcular la diferencia e insertarla en la nueva lista? – Odinn
@Odinn Care para poner eso en el código? –
Me gustaría ver el enfoque de C# para comparar, especialmente si está utilizando LINQ para hacer esto. – eternalmatt