Я решаю некоторые проблемы Project Euler в Haskell. Я написал программу для загадки, и она не работала так, как я ожидал.
Когда я смотрел в диспетчере задач при запуске программы, я увидел, что он использует > 1 гигабайт оперативной памяти на 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
Я знаю, что эта программа выведет номер, который я хочу, чтобы получить достаточное количество ОЗУ и времени, но должен быть более эффективный способ.