Общепринятая практика в мире C для сравнения двух фрагментов C - это увидеть, какую сборку они создают. Я хотел бы знать, какой код GHC будет генерировать в случае:Сравнение сгенерированного кода в ghc
afmap :: Functor f => (a -> b -> c) -> f b -> a -> f c
afmap fn fb a' = (fn a') <$> fb
и
afmap = flip . (((.).(.)) fmap ($))
Так что я пробовал:
$ ghc -S test.hs -o test.S
Который (неудивительно) дал более или менее нечитаемый код ,
Каков правильный способ (если есть) оценить, как ghc оптимизирует код?
Я бы посмотрел на произведенное ядро. Взгляните [здесь] (http://stackoverflow.com/questions/6121146/reading-ghc-core) – pdexter
Интересные ответы. Для записи, вероятно, ответ на мой вопрос можно найти в [ghc-core] (http://hackage.haskell.org/package/ghc-core). – fakedrake
Это отличный инструмент – pdexter