LINUX.ORG.RU

Оптимизация в GHC


0

0

Собирая один файл, заметил, что с -O1 или -O2 при запуске он уходит в рекурсию, а с -O0 практически не потребляет памяти.

Отсюда вопрос - какой флаг (-f*) заставляет его переводить итерацию обратно в рекурсию? И главное - зачем? ;) Или я чего-то не понимаю?

★★
Ответ на: комментарий от anonymous

combinations variants n
  | n == 1    = map (:[]) variants
  | otherwise = [ x : y | x <- variants, y <- combinations variants (n-1) ]

solveThisShit theData ans =
  [ comb | comb <- combinations [1,0,-1] (length theData), ans == mulAndSum theData comb ]
  where mulAndSum xs ys = sum [ x*y | (x,y) <- zip xs ys ]

main = print $ solveThisShit shit ans
       where
       shit = [245,12,14,27,20,13,31,3,16,221,18,21,26,19,56,72,33,16]
       ans = 380

-- У меня ел 800 метров памяти, легко, пока его не убивало ядро или ^C.

AiLr ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.