Haskell有一個標識函數,它返回輸入不變。該定義很簡單:爲什麼Haskell的「什麼都不做」的功能,ID,消耗大量的內存?
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's。在VIM中,將光標放在'f'的定義上,執行:':s/id id/id。 id。/ g'。 –
我給你你的第一個金徽章,通過將你的問題從+99增加到+100 :)。我通過以99票的方式查看所有問題,以及在沒有金徽章的情況下發布它們的問題發現了它)。 –