как решить «переполнение стека пространства» в haskell

При запуске следующей программы будет напечатано «переполнение пространства: текущий размер 8388608 байт». я прочиталэто а такжеэто, но до сих пор не знаю, как решить мою проблему. Я использую Foldr, разве он не должен быть "рекурсивным хвостом"?

Я до сих пор чувствую себя прекрасно в Haskell, пока не узнаю, что должен предотвращать «переполнение пространства» при использовании рекурсии powerf, ul. :)

module Main where
import Data.List

value a  b = 
  let l = length $ takeWhile (isPrime) $ map (\n->n^2 + a * n + b) [0..]
  in (l, a ,b)

euler27 = let tuple_list = [value a b | a <-[-999..999] , b <- [-999..999]]
      in foldr (\(n,a,b) (max,v) -> if n > max then (n , a * b) else (max ,v) ) (0,0) tuple_list
main = print euler27

РЕДАКТИРОВАТЬ: удалить определениеisPrime для простоты

Ответы на вопрос(2)

Ваш ответ на вопрос