在下面的通用代码中:
请注意,此处的 'f' 表示一种类型为函数的。
nat = [1..xmax]
xmax = *insert arbitrary Integral value here*
setA = [2*x | x <- nat]
setB = [3*x | x <- nat]
setC = [4*x | x <- nat]
setD = [5*x | x <- nat]
setOne = setA `f` setB
setTwo = setC `f` setD
setAll = setOne ++ setTwo
setAllSorted = quicksort setAll
请注意,此处的 'f' 表示一种类型为函数的。
f :: Integral a => [a] -> [a] -> [a]
这不仅仅是 ++)。
Haskell 如何处理尝试打印 setAllSorted 的情况?
它是否获取 setA 和 setB 的值,计算 setOne,然后仅将 setOne 的值保留在内存中(在计算其他内容之前)?
还是 Haskell 会一直保留所有东西,直到得到 setAllSorted 的值为止?
如果是后者的情况,那么我该如何指定(使用 main、do 函数和所有其他 IO 方面的内容),让它执行前者而非后者?
我能告诉程序按照什么顺序计算和回收垃圾吗?如果可以,我该如何做到?