在Scala中的Corecursion vs递归理解

时间:2015-09-09 12:41:40

标签: scala function recursion functional-programming

如果递归几乎清楚,例如

 def product2(ints: List[Int]): Int = {
      @tailrec
      def productAccumulator(ints: List[Int], accum: Int): Int = {
          ints match {
              case Nil => accum
              case x :: tail => productAccumulator(tail, accum * x)
          }
      }
      productAccumulator(ints, 1)
  }

我不确定核心运动。根据{{​​3}}," corecursion允许程序生成任意复杂且可能无限的数据结构,例如流"。例如像这样的构造

list.filter(...).map(...)

filtermap操作后制作临时流。 filter流后只会收集过滤后的元素,然后在map中我们会更改元素。正确?

功能组合器是否对map filter使用递归执行 在Scala中是否有任何一个好的例子"比较递归和corecursion"?

0 个答案:

没有答案