Haskell, girdiyi değiştirmeden veren bir kimlik fonksiyonuna sahiptir. tanım basittir: eğlence için YaniHaskell'in neden "hiçbir şey yapmama" fonksiyonu var id, tonlarca hafızayı tüketiyor?
id :: a -> a
id x = x
, bu çıkış 8
yapmalıdır: Birkaç saniye (ve Görev Yöneticisi göre belleğin yaklaşık 2 gb) sonra
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
, derleme ghc: out of memory
başarısız olur. Benzer şekilde, tercüman ghci: out of memory
diyor.
id
oldukça basit bir işlev olduğundan, çalışma zamanında bellek yükü veya derleme zamanı olmasını beklemezdim. Tüm bellek ne için kullanılıyor?
Bu kimlikleri oluşturmak istersiniz. VIM'de, 'f' tanımı üzerine imleci ile şunu yapın:': s/id id/id. kimlik/g –
Size ilk altın rozetinizi verdim, +99'dan +100'e kadar olan soruları yukarı-oylayarak :). Tüm sorulara 99 oyla ve bunları altın rozet olmadan gönderenlere bakarken buldum;). –