Утечка пространства в программе списка

Я решаю некоторые проблемы Euler Проекта в Haskell. Я записал программу для загадки в нем, и она не работала, как я ожидал.

Когда я смотрел в диспетчере задач при запущении программы, я видел, что это использовало> 1 гигабайт RAM на ghc. Друг меня записал программу с тем же значением в Java и успешно выполнился за 7 секунд.

import Data.List

opl = find vw $ map (\x-> fromDigits (x++[0,0,9]) ) 
        $ sequence [[1],re,[2],re,[3],re,[4],re,[5],re,[6],re,[7],re,[8],re]

vw x = hh^2 == x
    where hh = (round.sqrt.fromIntegral) x

re = [0..9]

fromDigits x = foldl1 (\n m->10*n+m) x

Я знаю, что эта программа произвела бы число, которое я хочу, учитывая достаточное количество RAM и время, но должен быть лучше работающий путь.

13
задан Will Ness 26 August 2012 в 16:54
поделиться