今天又继续多年没看的haskell了

想起之前看书时候提到的
foldr可以用于无穷序列,而foldl不行。一般情况下foldl效率比foldr高。
之前一直没怎么理解。
 
myfoldl f z [] = z
myfoldl f z (x:xs) = myfoldl f (f z x) xs

myfoldr f z [] = z
myfoldr f z (x:xs) = f x (myfoldr f z xs)

 

 
自己实现了一下,明显就可以看出myfoldl是一个尾递归,所以效率高
myfoldr在某些运算,比如and 运算,在x为false就可以结束了。
所以在某种情况下myfoldr可以用于无穷序列

相关文章:

  • 2022-12-23
  • 2021-08-20
  • 2021-10-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-08
  • 2021-08-25
猜你喜欢
  • 2022-12-23
  • 2022-01-27
  • 2021-11-14
  • 2021-10-24
  • 2021-05-21
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案