LINUX.ORG.RU

История изменений

Исправление 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 на регистр в простейшем случае).