好的,继续我之前的问题,我最终得到了以下代码:
module Main where
import Data.List
chain n | n == 0 = error "What are you on about?"
| n == 1 = [1]
| rem n 2 == 0 = n : chain (n `div` 2)
| otherwise = n : chain (3 * n + 1)
chainLength n = (n,length (chain n))
array = map chainLength [1..999]
lengths = map chainLength [1..1000000]
compareSnd (_, y1) (_, y2) = compare y1 y2
longestChain = maximumBy compareSnd lengths
从 GHCi 中作为模块加载没有问题,但运行 longestChain 会导致堆栈溢出。解决这个问题的方法不是完全重写,而是增加堆栈大小。 因此,我使用以下命令进行编译: ghc --make chain.hs
然后我遇到了一个错误:
chain.hs:1:0: The function 'main' is not defined in the module 'main'
我需要将主函数放在哪里才能使其正确编译。
一旦编译完成,如何运行输出或使用命令?
我猜想是通过:
ghc chain.o +RTS -K128M
编译完成后,我只需要用较大的堆栈大小运行longestChain即可。