Map (高阶函数)

Map (高阶函数)

映射的数学基础允许很多优化(英语:Program optimization)。复合定律确保了如下二者:

(map f . map g) list

map (f . g) list

导致相同的结果;就是说

map

(

f

)

map

(

g

)

=

map

(

f

g

)

{\displaystyle \operatorname {map} (f)\circ \operatorname {map} (g)=\operatorname {map} (f\circ g)}

。但是第二种形式比第一种形式在计算上更加有效率,因为每个map要求从头重建整个列表。因此,编译器将尝试将第一种形式变换第二种形式;这种类型的优化叫做“映射融合”,是循环融合(英语:Loop fission and fusion)的函数式类似者[4]。

映射函数可以并经常依据fold比如foldr来定义,这意味着可以做“map-fold融合”:foldr f z . map g等价于foldr (f . g) z。

在一个单链表上的map实现不是尾递归的,所以它在调用于大型列表的时候,可能在栈上建造大量的帧。很多语言作为替代的提供“逆向map”函数,它等价于逆转一个映射后的列表,但它是尾递归的。下面是利用了左fold函数的一个实现:

reverseMap f = foldl (\ys x -> f x : ys) []

因为逆转单链表也是尾递归的,reverse和reverse-map可以复合起来以尾递归方式进行正常的map,尽管这需要在这个列表上进行两趟。

相关新闻

自由女神像的历史介绍_自由女神像的历史简介
365速发彩票app下载旧版

自由女神像的历史介绍_自由女神像的历史简介

🕒 07-24 👽 8828
肉肉漫画app最新版下载-肉肉漫画app官方版下载
365bet体育在线大陆

肉肉漫画app最新版下载-肉肉漫画app官方版下载

🕒 07-12 👽 4114
晾肉架生存指南:在《饥荒》中保持肉类新鲜
365bet娱乐网站

晾肉架生存指南:在《饥荒》中保持肉类新鲜

🕒 07-30 👽 2751
拿了世界杯冠军,他还是法国最大的短板?
365速发彩票app下载旧版

拿了世界杯冠军,他还是法国最大的短板?

🕒 07-06 👽 4043
在 iPhone、iPad 或 Apple Vision Pro 上安装配置描述文件
刷(增加)网站或博客文章访问量
365bet体育在线大陆

刷(增加)网站或博客文章访问量

🕒 07-23 👽 9575