我写了这段代码,我假设len是尾递归,但仍然会发生堆栈溢出.怎么了?
myLength :: [a] -> Integer
myLength xs = len xs 0
where len [] l = l
len (x:xs) l = len xs (l+1)
main = print $ myLength [1..10000000]
Run Code Online (Sandbox Code Playgroud) 是否有可能在Haskell中关闭延迟评估?
库中是否有特定的编译器标志来促进这一点?
我想尝试一些我曾经写过的旧程序的新东西,看看我是否可以提高性能.