Emi*_*mil 11 performance haskell list ghc
昨晚,我正在编写一些娱乐代码,并且在某些时候我更换了一个concatMap,>>=并且在我的代码中看到了大约10%的加速.
我的印象是对于>>=for 的定义[]是完全正确的concatMap,所以我有点困惑.
在基础4.8 (>>=)中实现(见这里):
xs >>= f = [y | x <- xs, y <- f x]
Run Code Online (Sandbox Code Playgroud)
并concatMap使用更复杂的构建器(源于此处)
concatMap :: Foldable t => (a -> [b]) -> t a -> [b]
concatMap f xs = build (\c n -> foldr (\x b -> foldr c b (f x)) n xs)
Run Code Online (Sandbox Code Playgroud)