在解决一些项目Euler问题以学习Haskell(所以目前我是一个完全初学者)时,我遇到了问题12.我写了这个(天真的)解决方案:
--Get Number of Divisors of n
numDivs :: Integer -> Integer
numDivs n = toInteger $ length [ x | x<-[2.. ((n `quot` 2)+1)], n `rem` x == 0] + 2
--Generate a List of Triangular Values
triaList :: [Integer]
triaList = [foldr (+) 0 [1..n] | n <- [1..]]
--The same recursive
triaList2 = go 0 1
where go cs n = (cs+n):go (cs+n) (n+1)
--Finds the first triangular Value with more than n Divisors
sol …
Run Code Online (Sandbox Code Playgroud) 如果我知道某个值可能会在它第一次遇到垃圾收集器时存活下来,有没有办法让GHC知道,所以它可以直接在托儿所外的某个地方分配它?例如,如果我用一堆较小的碎片构建一个大型结构,我知道每个碎片至少会持续到整个结构完成.