当对函数乘积使用递归的 Foldr 模式时,我们得到:
product [] = 1
product (x:xs) = x * product xs
我的问题是,“product [] = 1”是什么意思?例如,对于 sum 函数,我们有 sum[] = 0?这是对答案的某种限制吗?
提前谢谢您。
最佳答案
product []
是基本情况。通过对该函数的评估,很容易明白它存在的原因。
product [5, 4, 8]
5 * product [4, 8]
5 * 4 * product [8]
5 * 4 * 8 * product []
5 * 4 * 8 * 1
160
如果基本情况不存在,产品 [] 将无法评估任何内容。 1 是乘法的恒等式,就像 0 是加法的恒等式一样,即 1 乘以任何数字始终是该数字,就像 0 加任何数字都是该数字一样。
关于haskell - Foldr 递归模式中的 f [] = v 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49748268/