C에서 두 개의 플래그먼트를 비교하는 일반적인 방법은 생성되는 어셈블리를 확인하는 것입니다. 그래서 시도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이의 경우에 발생 될지 코드를 알고 싶어 .
ghc가 코드를 최적화하는 방법을 평가하는 올바른 방법 (있는 경우)은 무엇입니까?
나는 제작 된 코어를 볼 것입니다. 보세요 [여기] (http://stackoverflow.com/questions/6121146/reading-ghc-core) – pdexter
흥미로운 답변. 기록을 위해 아마도 내 질문에 대한 대답은 [ghc-core] (http://hackage.haskell.org/package/ghc-core)에서 찾을 수 있습니다. – fakedrake
그건 훌륭한 도구입니다. – pdexter