История изменений
Исправление quasimoto, (текущая версия) :
http://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects#Funct...
http://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/GeneratedCode
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.3729
ghc -O<n> -S <file>.hs; cat <file>.s | grep closure | wc -l (static closures).
http://community.haskell.org/~simonmar/papers/eval-apply.pdf
Что-нибудь вроде
loop ... a ... = go ... where
go ... n ... = ... a, n, go (...) ...
в итоге на каждое использование (loop ...) будет генерировать (статично) вариант Module_zdwgo<n>_closure.
Исходная версия quasimoto, :
http://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects#Funct...
http://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/GeneratedCode
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.3729
ghc -O<n> -S <file>.hs; cat <file>.s | grep closure | wc -l (static closures).
http://community.haskell.org/~simonmar/papers/eval-apply.pdf
Что-нибудь вроде
loop ... a ... = go ... where
go ... n ... = ... a, n, go (...) ...
в итоге на каждое использование (loop ...) будет генерировать (статично) вариант Module_zdwgo<n>_closure свободные переменные которой будет выставлять пользователь (пусть и mov на регистр в простейшем случае).