ZipWith

object ZipWith {

  def zipWith[T](l1: List[T], l2: List[T])(f: (T, T) => T): List[T] = (l1, l2) match {
    case (_, Nil)             => Nil
    case (Nil, _)             => Nil
    case (h1 :: t1, h2 :: t2) => f(h1, h2) :: zipWith(t1, t2)(f)
  }

  def main(args: Array[String]): Unit = {
    println(zipWith(List(1, 2, 3), List(4, 5, 6, 7))(_ + _))
  }

}
List(5, 7, 9)
时间: 2024-10-05 14:43:13

ZipWith的相关文章

erlang实现zipwith函数

实现一个zip函数,将两个集合的元素合并起来,譬如 zip [1,2,3] [4,5]  = [(1,4),(2,5)], 和空集合合并还是空的. -module(zip). -export([zip/2]). zip(_, []) -> []; zip([], _) -> []; zip([X|XS],[Y|YS]) -> [{X, Y}|zip(XS, YS)]. ------------------结果测试-----------------------------

ReactiveCocoa2 源码浅析

ReactiveCocoa2 源码浅析 标签(空格分隔): ReactiveCocoa iOS Objective-C ? 开车不需要知道离合器是怎么工作的,但如果知道离合器原理,那么车子可以开得更平稳. ReactiveCocoa 是一个重型的 FRP 框架,内容十分丰富,它使用了大量内建的 block,这使得其有强大的功能的同时,内部源码也比较复杂.本文研究的版本是2.4.4,小版本间的差别不是太大,无需担心此问题. 这里只探究其核心 RACSignal 源码及其相关部分.本文不会详细解释里

Haskell高阶函数

Haskell functions can take functions as parameters and return functions as return values. A function that does either of those is called a higher order function. Higher order functions aren't just a part of the Haskell experience, they pretty much ar

iOS开发ReactiveCocoa学习笔记(四)

ReactiveCocoa常见操作方法介绍: demo地址:https://github.com/SummerHH/ReactiveCocoa.git p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #008400; min-height: 13.0px }

iOS开发>学无止境 - 这样好用的ReactiveCocoa,根本停不下来

作者:空之境界 网址:http://supermao.cn/zhe-yang-hao-yong-de-reactivecocoagen-ben-ting-bu-xia-lai/ 前戏 我个人非常推崇ReactiveCocoa,它就像中国的太极,太极生两仪,两仪生四象,四象生八卦,八卦生万物.ReactiveCocoa是一个高度抽象的编程框架,它真的很抽象,初看你不知道它是要干嘛的,等你用上了之后,就发现,有了它你是想干嘛就干嘛,编码从未如此流畅. 在此我不会讲ReactiveCocoa的原理,因

泛函编程(38)-泛函Stream IO:IO Process in action

在前面的几节讨论里我们终于得出了一个概括又通用的IO Process类型Process[F[_],O].这个类型同时可以代表数据源(Source)和数据终端(Sink).在这节讨论里我们将针对Process[F,O]的特性通过一些应用实例来示范它的组合性(composibility)和由数据源到接收终端IO全过程的功能完整性. 我们已经在前面的讨论中对IO Process的各种函数组合进行了调研和尝试,现在我们先探讨一下数据源设计方案:为了实现资源使用的安全性和IO程序的可组合性,我们必须保证无

Android RxJava使用介绍(四) RxJava的操作符

本篇文章继续介绍以下类型的操作符 Combining Observables(Observable的组合操作符) Error Handling Operators(Observable的错误处理操作符) Combining Observables(Observable的组合操作符) combineLatest操作符 combineLatest操作符把两个Observable产生的结果进行合并,合并的结果组成一个新的Observable.这两个Observable中任意一个Observable产生

什么是strict function

strict function,严格函数.什么是严格函数呢? 学术上的定义是: 假如有一个函数f. 我们定义. 其中是一个表达式,这个表达式要么没有返回值,要么是一个死循环(或者循环直到出错退出). 这就是严格函数. 通俗来讲,如果一个函数被调用前,它的参数被完全计算求值了,那么它就是一个严格函数. 与严格函数相反的是非严格函数,非严格函数被调用时,它的参数可能没有被计算求值,这也叫做惰性求值(lazy evaluation). 惰性求值有什么好处呢? 除可以得到性能的提升外,惰性求值的最重要的

ReactiveCocoa信号使用方法

最近研究RAC时都是基于UI控件来使用,对单独的signal没有使用过,最近在网上看到一篇文章是关于RAC单独signal的使用.在学习整理后将个人觉得能帮助用于UI控件的一些signal使用方法记录如下(也许能从中思考出用于UI控件信号组合的方法): 1.基本的signal创建使用 1 //创建一个signal,并直接发送next事件对象 2 RACSignal *signalA = [RACSignal createSignal:^RACDisposable *(id<RACSubscrib