小编Kev*_*vin的帖子

Word foldl'没有优化和Int foldl'

import Data.List

test :: Int -> Int
test n = foldl' (+) 0 [1..n]

main :: IO ()
main = do
  print $ test $ 10^8
Run Code Online (Sandbox Code Playgroud)

GHC优化了上面的代码,以至于垃圾收集器甚至不需要做任何事情:

$ ghc -rtsopts -O2 testInt && ./testInt +RTS -s
[1 of 1] Compiling Main             ( testInt.hs, testInt.o )
Linking testInt ...
5000000050000000
          51,752 bytes allocated in the heap
           3,480 bytes copied during GC
          44,384 bytes maximum residency (1 sample(s))
          17,056 bytes maximum slop
               1 MB total memory in use (0 MB lost due …
Run Code Online (Sandbox Code Playgroud)

optimization haskell ghc

14
推荐指数
1
解决办法
154
查看次数

为什么foldl1'不能推广到可折叠?

标题说明了一切.foldl1并且foldl'都是概括的Foldable,而foldl1'不是.这只是最近的疏忽吗?或者它是一个设计选择?

类型foldl1'

foldl1' :: (a -> a -> a) -> [a] -> a
Run Code Online (Sandbox Code Playgroud)

我希望它的类型与foldl1:

foldl1 :: Foldable t => (a -> a -> a) -> t a -> a
Run Code Online (Sandbox Code Playgroud)

我也看到它foldl1'是出口Data.List但不是Data.Foldable.也许这是相关的?

haskell typeclass fold

7
推荐指数
1
解决办法
176
查看次数

如何从Haskell程序中访问"+ RTS -s"或其他内存信息?

运行Haskell程序时,+ RTS -s报告诸如"字节最大驻留时间"之类的信息.有没有办法从Haskell程序中访问这些信息?Hackage上有一个提供此功能的库吗?

如果没有,有没有办法访问当前使用的内存量?例如,终端命令"top"显示的数量?

haskell ghc

3
推荐指数
1
解决办法
61
查看次数

标签 统计

haskell ×3

ghc ×2

fold ×1

optimization ×1

typeclass ×1