Wir verschmelzen können zwei Überquerungen über die Liste xs
im AusdruckWie kann ich zwei Karten über dieselbe Liste verschmelzen? automatisch
(map f xs, map g xs)
wie so
unzip (map (\x -> (f x, g x)) xs)
Gibt es eine reasearch auf diese Art von Fusion durchführen?
(Es gibt ein Risiko, hier einen Raum Leck zu schaffen, wenn eine der zurück Listen vor dem anderen verbraucht wird ich die zusätzliche Traversal über xs
bei der Prävention als platzsparend mehr interessiert bin..)
Edit: Ich Ich versuche eigentlich nicht, die Fusion auf tatsächliche In-Memory-Haskell-Listen anzuwenden, wo diese Transformation keinen Sinn ergibt, je nachdem ob die unzip
mit ihren Consumern verschmolzen werden kann. Ich habe eine Einstellung, wo ich weiß unzip
kann fusionieren (siehe "FlumeJava: einfache, effiziente Daten-parallele Pipelines").
Nicht automatisch, aber trotzdem ziemlich nett: http://squing.blogspot.com/2008/11/beautiful-folding.html –
Wenn das Ergebnis davon nicht mit etwas anderem verschmilzt, wird der Overhead des Erstellens der Paare und Entpacken sie größer sein als die Kosten der zusätzlichen Durchquerung. – augustss
@augustss Nicht wenn die Traversierung über eine riesige Datei geht! Ich habe nicht vor, dies auf tatsächliche Listen anzuwenden. – tibbe