相关疑难解决方法(0)

Haskell数据类型的内存占用量

如何找到在Haskell中存储某些数据类型值所需的实际内存量(主要是使用GHC)?是否可以在运行时(例如在GHCi中)对其进行评估,还是可以从其组件中估算复合数据类型的内存要求?

在一般情况下,如果类型的存储需求ab已知的,什么是代数数据类型,如内存开销:

data Uno = Uno a
data Due = Due a b
Run Code Online (Sandbox Code Playgroud)

例如,这些值占用的内存中有多少字节?

1 :: Int8
1 :: Integer
2^100 :: Integer
\x -> x + 1
(1 :: Int8, 2 :: Int8)
[1] :: [Int8]
Just (1 :: Int8)
Nothing
Run Code Online (Sandbox Code Playgroud)

据我所知,由于垃圾收集延迟,实际的内存分配更高.由于惰性评估,它可能会有很大的不同(并且thunk大小与值的大小无关).问题是,给定数据类型,在完全评估时它的值会占用多少内存?

我发现:set +sGHCi中有一个选项可以查看内存统计信息,但目前尚不清楚如何估算单个值的内存占用量.

haskell memory-management ghc algebraic-data-types

120
推荐指数
2
解决办法
6992
查看次数

在函数中匹配时是否返回相同的Empty?

我们有来自NICTA课程的mapOptional :

mapOptional :: (a -> b) -> Optional a -> Optional b
mapOptional _ Empty    = Empty
mapOptional f (Full a) = Full (f a)
Run Code Online (Sandbox Code Playgroud)

匹配时f我们显然使用传递的函数,那么Empty呢?那怎么样Full

haskell pointers

5
推荐指数
1
解决办法
117
查看次数