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)].

------------------结果测试-----------------------------

时间: 2024-10-27 13:30:33

erlang实现zipwith函数的相关文章

Erlang高阶函数

对于函数式语言来说,函数也想普通的数据类型一样无处不在.函数即可以当成参数进行传递,也可以当成函数的返回值.当我第一次学习函数式编程的时候,我被这样的写法弄的头昏脑涨.下面我举例说明下(例子摘录自Learn You Some Erlang): 假如你想对一个列表中的所有值都进行加1或减1的操作,那么不熟悉函数式编程者给出的是如下的程序: -module(hhfuns). -compile(export_all). increment([]) -> []; increment([H|T]) ->

erlang的spawn函数

问: 1. spawn(fun() -> loop() end).2. spawn(loop()).语句1和2到底有什么区别? 2会阻塞,1不会, spawn到底是怎么执行的?? 过程能否说详细点. loop() ->receive    ok -> ok, loop();    stop -> stopend. 答1: 我也碰到这个问题,搜索到这个帖子,但2楼也没解释好.我找到原因了,写清楚一点,让以后的网友知道. 要用: spawn(fun loop/0 end). 的形式才行

erlang lists模块函数使用大全

http://qqdenghaigui.iteye.com/blog/1554541 一,带函数Pred1, all(Pred, List) -> boolean()如果List中的每个元素作为Pred函数的参数执行,结果都返回true,那么all函数返回true,否则返回false 例子: lists:all(fun(E) -> true end,[1,2,3,4]). 结果 true 2, any(Pred, List) -> boolean()如果List中至少有一个元素作为Pre

erlang lists模块函数使用大全(copy)

一,带函数Pred 1, all(Pred, List) -> boolean()如果List中的每个元素作为Pred函数的参数执行,结果都返回true,那么all函数返回true, 否则返回false例子:lists:all(fun(E) -> true end,[1,2,3,4]).结果true 2, any(Pred, List) -> boolean()如果List中至少有一个元素作为Pred函数的参数执行,结果返回true,那么any函数返回true, 否则返回false例子l

erlang判断模块导出函数问题

erlang本身提供一个接口,可以用来检查模块是否有导出函数,这个接口是erlang:function_exported/3,但是很多时候这个接口无法正常使用. 下面重现一下这个问题: 1> erlang:function_exported(crypto,start,0). false 2> crypto:start(). ok 3> erlang:function_exported(crypto,start,0). true 注意:例子中并不是说一定要crypto:start()才能使

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() 获取文件编码,f.encoding() 获取文件在内存中的编号,f.fileno() 获取文件终端类型(tty.打印机等),f.isatty() 获取文件名,f.name() 判断文件句柄是否可移动(tty等不可移动),f.seekable() 判断文件是否可读,f.readable() 判断文件是

ERLANG远端节点奔溃导致发消息进程堵消息问题探源

问题描述:在生产环境中出现一例性能问题,A和B两个结点运行在两台服务器上,A与B互联,A不断向B发送消息.B结点所在机器发生宕机,导致A结点中发送消息的进程赌消息. 追踪过程:通过erlang:process_info(erlang:whereis(Pid))发现current_function一直是gen:do_call/4.messages消息堆积到数十万级别. 源码分析:在代码中向远端发送消息的调用函数为erlang:send(Pid,Msg),Pid是属于远端结点的接收进程.对该函数做一

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

Erlang pool management -- RabbitMQ worker_pool

在RabbitMQ中,pool 是以worker_pool 的形式存在的, 其主要用途之一是对Mnesia transaction 的操作. 而在RabbitMQ 中, pool 中的worker 数量是固定不变的, 是和虚拟机的schedulers 相关.这次会首先分别分析设计worker_pool 功能的三个module, 然后分析worker_pool 和 worker_pool_worker module 之间的调度关系. worker_pool_sup module worker_po