Supongamos que tengozipWith (mapeo a través de múltiples Seq) en Scala
val foo : Seq[Double] = ...
val bar : Seq[Double] = ...
y deseo para producir una SEC donde el baz (i) = foo (i) + bar (i). Una forma que se me ocurre de hacerlo es
val baz : Seq[Double] = (foo.toList zip bar.toList) map ((f: Double, b : Double) => f+b)
Sin embargo, esto se siente tanto fea e ineficiente - Tengo que convertir ambos SEQs a listas (que estalla con las listas perezoso), crear esta lista temporal de tuplas, solo para mapearlo y dejar que sea GCed. Tal vez las transmisiones resuelvan el problema de la pereza, pero en cualquier caso, esto parece innecesariamente feo. En lisp, la función del mapa se correlacionaría en múltiples secuencias. Yo escribiría
(mapcar (lambda (f b) (+ f b)) foo bar)
Y no se crearían listas temporales en ninguna parte. ¿Existe una función de mapa sobre múltiples listas en Scala, o se combina el código postal con la desestructuración como la forma "correcta" de hacer esto?
Lo sentimos, no zipWith en Scala 2.8. –
Para ser claros (y estoy seguro de que Daniel estaría de acuerdo), Scala no tiene nada por lo que disculparse, lo que obtienes con Scala es aún mejor. Vea la respuesta de Martin a continuación, y la de Daniel. Sería bueno que alguien pudiera hacer de Martin la respuesta aprobada a esta pregunta ... – AmigoNico