История изменений
Исправление quasimoto, (текущая версия) :
я правильно понял, что проблема аж sequence
Да
liftM sum . replicateM n
==
replicateM n
~~~~~~~~~~~~~~~~~~~~~~
liftM sum . sequence . replicate n
~~~~~~~~~~~~~~~~~~~~
sumM
==
sumM . replicate n
падают, тогда как sumM . replicate n при sumM через хвостовой foldM в обход replicate — работает.
http://comments.gmane.org/gmane.comp.lang.haskell.libraries/20113
что примечательно разницы между foldl и foldl' не будет
Разницы между foldl/foldl' на числах и sum/sum' в частности нет начиная с -O1 — видно, что много всего происходит в -ddump-simpl-stats, так что в итоге -ddump-simpl идентичны (с точностью до gensym-ов). Как и bang-patterns при оптимизациях часто не нужны (в base, например, не особо их видно).
Исправление quasimoto, :
я правильно понял, что проблема аж sequence
Да
liftM sum . replicateM n
==
replicateM n
~~~~~~~~~~~~~~~~~~~~~~
liftM sum . sequence . replicate n
~~~~~~~~~~~~~~~~~~~~
sumM
падают, тогда как sumM . replicate n при sumM через хвостовой foldM в обход replicate — работает.
http://comments.gmane.org/gmane.comp.lang.haskell.libraries/20113
что примечательно разницы между foldl и foldl' не будет
Разницы между foldl/foldl' на числах и sum/sum' в частности нет начиная с -O1 — видно, что много всего происходит в -ddump-simpl-stats, так что в итоге -ddump-simpl идентичны (с точностью до gensym-ов). Как и bang-patterns при оптимизациях часто не нужны (в base, например, не особо их видно).
Исходная версия quasimoto, :
я правильно понял, что проблема аж sequence
Да
liftM sum . replicateM n
==
replicateM n
~~~~~~~~~~~~~~~~~~~~~~
liftM sum . sequence . replicate n
~~~~~~~~~~~~~~~~~~~~
sumM
падают, тогда как sumM . replicate n при sumM через хвостовой foldM в обход replicate — работает.
http://comments.gmane.org/gmane.comp.lang.haskell.libraries/20113
что примечательно разницы между foldl и foldl' не будет
Разницы между foldl/foldl' на числах и sum/sum' в частности нет начиная с -O1 — видно, что много всего происходит в -ddump-simpl-stats, так что в итоге -ddump-simpl идентичны (с точностью до gensym-ов). Как и bang-patterns при оптимизациях часто не нужны (в base, например, не особо их видно).