Supponiamo che io sonozipWith (mappatura su più Seq) in Scala
val foo : Seq[Double] = ...
val bar : Seq[Double] = ...
e desidero produrre un ss dove il baz (i) = foo (i) + bar (i). Un modo posso pensare di fare questo è
val baz : Seq[Double] = (foo.toList zip bar.toList) map ((f: Double, b : Double) => f+b)
Tuttavia, questo si sente sia brutto e inefficiente - devo convertire sia seguenti del regolamento provvisorio per le liste (che esplode con le liste pigri), creare questa lista provvisoria di tuple, solo per mappare su di esso e lasciare che sia GCed. Forse i flussi risolvono il problema pigro, ma in ogni caso, sembra inutilmente brutto. In Lisp, la funzione mappa verrebbe mappata su più sequenze. Vorrei scrivere
(mapcar (lambda (f b) (+ f b)) foo bar)
E nessuna lista temporanea sarebbe stata creata ovunque. Esiste una funzione map-over-multiple-lists in Scala, oppure la compressione combinata con destrutturazione è davvero il modo "giusto" per farlo?
Siamo spiacenti, nessun file zipWith su Scala 2.8. –
Giusto per essere chiari (e sono sicuro che Daniel sarebbe d'accordo), Scala non ha nulla da scusarsi per questo - quello che ottieni con Scala è ancora meglio. Vedi la risposta di Martin in basso, e quella di Daniel. Sarebbe bello se qualcuno potesse dare a Martin la risposta approvata a questa domanda ... – AmigoNico