如何在函数式编程语言中增加变量?
例如,我想这样做:
main :: IO ()
main = do
let i = 0
i = i + 1
print i
Run Code Online (Sandbox Code Playgroud)
预期产量:1.
我正在学习 Haskell 编程,并试图了解列表的工作原理,因此我尝试编写两个可能的length函数:
myLength :: [a] -> Integer
myLength = foldr (\x -> (+) 1) 0
myLength1 :: [a] -> Integer
myLength1 [] = 0
myLength1 (x:xs) = (+1) (myLength1 xs)
Run Code Online (Sandbox Code Playgroud)
哪一个更好?
在我看来,myLength1它更容易理解,并且在列表上操作看起来很自然。
另一方面,myLength较短且不使用递归;这是否意味着myLength运行速度比 myLength1?