Haskell具有一个标识函数,该函数不变地返回输入。定义很简单:
id :: a -> a
id x = x
所以为了娱乐,这应该输出8
:
f = id id id id id id id id id id id id id id id id id id id id id id id id id id id
main = print $ f 8
几秒钟后(根据任务管理器,大约有2 gb的内存),编译将失败ghc: out of memory
。同样,口译员说ghci: out of memory
。
由于它id
是一个非常简单的函数,因此我不希望它在运行时或编译时成为内存负担。所有的内存都用来做什么?
id
。在VIM中,将光标放在的定义上f
,执行以下操作::s/id id/id . id ./g
。