Die ganze Zeit, als irgendeine Haskell-Vorlesung von "flacher Karte" sprach, normalerweise in Bezug auf Monaden, dachte ich, dass sie aus einem Grund "flach" genannt wurde, dh sie flacht den Container ab . Sofmap und "flache Karte" in Haskell
[[1,2],[3,4]]
würde verarbeitet werden, als ob es waren
[1,2,3,4]
Aber jetzt entdecke ich, dass fmap und Karte sind im Grunde das gleiche, der einzige Unterschied ist die Anwendung einer für functors und der andere für nur Listen. Und das wurde am Ende nur gemacht, um Fehlermeldungen bei der Verwendung von map zu vermeiden.
Stimmt das? Und wenn ja, warum ist f
in fmap zu "flach" geworden, warum nicht "funktor map"?
Das 'f' in' fmap' bedeutet nicht "flach". Das Äquivalent von 'flatMap' in Haskell ist' (>> =) '. Die "map" -Funktion für Listen wurde zuerst definiert, so dass ein anderer Name für die allgemeinere "fmap" -Funktion benötigt wurde. – Lee
Vielmehr ist 'fmap' die Verallgemeinerung von' map' zu anderen Funktoren neben dem Listenfunktor. Wer auch immer gesagt hat, dass "fmap" die Abkürzung für "flache Karte" war, lag falsch. – chepner
Sind Sie sicher, dass der Vortrag, auf den Sie sich beziehen, sich auf "fmap" bezieht, wenn Sie "flache Karte" sagen? Es würde mehr Sinn ergeben, wenn es sich auf "concatMap" (aka '>> =') bezogen hätte, was in anderen Sprachen oft 'flatMap' genannt wird und sich so verhält, wie Sie es erwartet haben. – sepp2k