从FP函数式编程的眼中看来,世界的万事万物就是处理数据流:
- input --> process -- output
FP函数式编程是一种思维方式:
比如非函数式,会这样写程序:
- > var name = "gaowei";
- > var greeting = "Hello,I'm ";;
- > console.log(greeting + name)
- Hello,I'm gaowei
而函数范式编程则会这样写程序:
- > function greet(name) {
- ... return "Hi, I'm " + name;
- ... }
- > greet("Gaowei");
- "Hi, I'm Gaowei"
举例说明“非纯函数”,
- > let name = "Gaowei";
- > function greet() {
- ... console.log("Hi, I'm " + name);
- ... }
- > greet()
- Hi, I'm gaowei
这就不是一个纯函数,因为没有返回结果。
而纯函数则是:
- > function greet(name) {
- ... return "Hi, I'm " + name;
- ... }
在高阶函数中,函数本身又可作为输入与输出。
- > function setAdjectifier(adjective) {
- ... return function(description) {
- ..... return adjective + " " + description;
- ..... }
- ... }
- > let greatifier = setAdjectifier("great");
- > greatifier("meeting")
- 'great meeting'
map与filter之间的关联与区别,可以参见下面这张图:
举例,我们惯常的做法常常为:
- > let fruits = ['apple', 'banana', 'peach'];
- > fruits[2] = 'orange'
- 'orange'
- > fruits
- [ 'apple', 'banana', 'orange' ]
上面的mutation的处理方法,将会修改原始数据。
尝试 functional-programming的方式为:
- > newFruits = fruits.map( rm => rm == "orange" ? "peach" : rm)
- [ 'apple', 'banana', 'peach' ]
- > fruits
- [ 'apple', 'banana', 'orange' ]
而能够高效处理 immutable 数据的常用库为:Mori, immutable.js, Underscor, Lodash, Ramda 等。
3月24日,腾讯发布2020年Q4及全年财报,其中金融科技及企业服务第四季收入385亿...
背景 有时候我会碰到快速搭建测试服务的需求,比如像这样: 搭建一个 HTTP Servi...
本文转载自微信公众号「后端Q」,作者conan。转载本文请联系后端Q公众号。 概述 ...
作者 | 楚奕 来源 | 阿里技术公众号 这篇文章主要从技术视角介绍下跨平台WebCanv...
创业与投资的本质,都是追寻一种能够穿越时空,抵达未来的高效方式。 德勤管理咨...
1.百度是个大骗子,我抄了十几年的满分作文却从未得过满分。 2.学神在刷难题,...
1.某女生寝室门口贴着一个告示男生与饭盒不得入内,问何解?答曰两者都会搞大女...
1.在报名的路上,我看见远处的学校,轰!的一声没了。希望如此。 2.男:我一直...
基于阿里巴巴的互联网架构、大数据技术,利用混合云架构打造全新的云化电子税 务...
前言 微服务成了互联网架构的标配模式,对微服务之间的调用的流量治理和管控就尤...