Clojure语言十一:map函数

map函数比较特别,首先看一个简单的功能:

user=> (def f (fn [x] (+ 2 x)))
#'user/f
user=> (map f [2 4 7])
(4 6 9)

先定义了一个f函数,接受一个参数,然后返回+2后的结果。

map接受两个参数,第一个是f函数,第二个是一个数组。用数组中的三个元素依次调用f函数,每次调用的结果加入到一个list中并返回。


map的文档:

-------------------------
clojure.core/map
([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls])
  Returns a lazy sequence consisting of the result of applying f to the
  set of first items of each coll, followed by applying f to the set
  of second items in each coll, until any one of the colls is
  exhausted.  Any remaining items in other colls are ignored. Function
  f should accept number-of-colls arguments.
nil
还有一个较高级的用法,比如:

user=> (def f (fn [x y] (+ x y)))
#'user/f

user=> (map f [2 4] [9 0])
(11 4)

这里f函数接受两个参数,因此map 后面的集合数目必须是两个。运行的结果应该是:

((f(2 9)) (f(4 0)))

也就是(11 4)


这个map和map reduce思想有点接近。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值