Eine allgemeine Praxis in der C-Welt, zwei Fragmets von C zu vergleichen, ist zu sehen, welche Assembly sie erzeugen. Ich wollte wissen, welcher Code GHC im Fall erzeugen würde:Vergleichen Sie generierten Code in ghc
afmap :: Functor f => (a -> b -> c) -> f b -> a -> f c
afmap fn fb a' = (fn a') <$> fb
und
afmap = flip . (((.).(.)) fmap ($))
Also habe ich versucht:
$ ghc -S test.hs -o test.S
Welche (wenig überraschend) ergab mehr oder weniger unlesbaren Code .
Was ist der richtige Weg (wenn überhaupt) zu bewerten, wie ghc Code optimiert?
Ich würde den produzierten Kern betrachten. Werfen Sie einen Blick [hier] (http://stackoverflow.com/questions/6121146/reading-ghc-core) – pdexter
Interessante Antworten. Für die Aufzeichnung, wahrscheinlich ist die Antwort auf meine Frage in [ghc-core] (http://hackage.haskell.org/package/ghc-core) zu finden. – fakedrake
Das ist ein großartiges Werkzeug – pdexter