Size: a a a

2021 April 08

[

[BRM]White Rabbit in Haskell
Тогда я комплексую
источник

[

[BRM]White Rabbit in Haskell
Ну, ладно, в любом событии надо искать что-то хорошее. Теперь есть цель быть как минимум не хуже через полтора годика👀
источник

IO

I O in Haskell
Справедливости ради, свободного времени у меня дофига (и практически все я трачу на хаскель), так что мои полтора года наверное можно за 3 считать
источник

L

Lierdakil in Haskell
Да, действительно, слона-то я и не заметил. Спасибо.
источник

IO

I O in Haskell
Когда речь об аллокациях лучше не в кору а на стг смотреть, там аллокации это только let, так что сразу видно.

Такое


avg1 :: [Double] -> Double
avg1 = go 0 0
 where
 go :: Double -> Double -> [Double] -> Double
 go s n [] = s/n
 go s n (x:xs) = go (s+x) (n+1) xs


Без оптимизаций даёт такое стг:


go_r1dg =
   sat-only \r [s_s1dk n_s1dl ds_s1dm]
       case ds_s1dm of {
         [] -> / $fFractionalDouble s_s1dk n_s1dl;
         : x_s1do xs_s1dp ->
             let {
               sat_s1ds =
                   \u []
                       let { sat_s1dr = NO_CCS D#! [1.0##];
                       } in  + $fNumDouble n_s1dl sat_s1dr; } in
             let { sat_s1dq = \u [] + $fNumDouble s_s1dk x_s1do;
             } in  go_r1dg sat_s1dq sat_s1ds xs_s1dp;
       };


Видно, что на каждом вызове три аллокации: литерал 1(!), s и n
источник

к

кана in Haskell
с чем я не согласен по очень простой причине: код который написан так, что работает нормально только с оптимизатором, невозможно запускать из репла, что очень сильно усложняет жизнь
источник

D

Dreamerinnoise in Haskell
репл же на прототипирование/разработку
источник

D

Dreamerinnoise in Haskell
дальше уже игры с бубном
источник

KV

Kirill Valyavin in Haskell
А чё в репле нельзя скомпилированный код запускать?
источник

к

кана in Haskell
ну вот разрабатывать может и не получаться, если какая-то функция начинает вместо секунд работать 10 минут
источник

к

кана in Haskell
реальный случай бтв, никогда еще не получалось дождаться завершения работы того кода в репле, который в скомпилированном виде работал 15 секунд, приходится постоянно пересобирать и перезапускать
источник

KV

Kirill Valyavin in Haskell
Дак может компилировать перед вызовом в репле?
источник

к

кана in Haskell
а как?
источник

KV

Kirill Valyavin in Haskell
Оно само должно найти обжект файлы вроде
источник

KV

Kirill Valyavin in Haskell
Кабалу можно builddir передать, где собранное
источник

IO

I O in Haskell
stack ghci --ghc-options "-fobject-code -O2" ftw
источник

к

кана in Haskell
так а какой смысл запускать из репла, если нужно будет заранее собрать вне репла
источник

к

кана in Haskell
мне хочется из репла одной командой запустить то что я сделал и посмотреть результат, а не начинать ритуал прекомпиляции
источник

A

Andrey in Haskell
в одной сессии терминала репл, в другой — бинарь..
источник

D

Dreamerinnoise in Haskell
:set -fobject-code
:load
источник