Я считаю, что это — баг. Стоит сообщить в ghc-developers mail list.
У меня это тоже есть память без ограничений, но только в GHCI. GHC даже с выключенными оптимизациями таким не занимается.
А>Всем привет! А>Никак не могу понять почему течет память в программе.
А>test :: () -> () А>test () = test () А>main = putStrLn.show $ test ()
А>Эксперементами установил, что если сделать так: test () = 1 `seq` test (), то все нормально, т.е. программа крутится в бесконечном цикле, объем занимаемой памяти остается постоянным. Но если поменять 1 на значение какого-то другого типа (даже на 1::Int), память расходуется очень быстро. А>Кто-нибудь может объяснить такое поведение? Похоже на баг. Версия GHC 6.12.1