为什么“修复”需要占用大量内存?

时间:2018-05-26 16:51:39

标签: haskell memory

我使用了这段代码:

fix' f = let x = f x in x

然后跑

> :set +s
> fix' (const 'u')

只得到:

'u'
(0.00 secs, 83,512 bytes)

现在为什么会占用这么多内存?

我将评估如下:

fix' f = let x = f x in x
fix' (const 'u')
let x = const 'u' x in x
const _ x = x
const 'u' undefined
'u'

这当然是一种非常低效的格式,但在ASCII编码中只需要105个字节,加上用于比较的一些内存使用量仍然无法在fix示例中使用。

0 个答案:

没有答案