函数式编程思想

zzfx zzfx     2022-10-28     230

关键词:

对于函数式编程来说,其只关心,定义输入数据和输出数据相关的关系,数学表达式里面其实是在做一种映射(mapping),输入的数据和输出的数据关系是什么样的,是用函数来定义的。

http://www.yxtvg.com/toutiao/5413179/20180212a04ro500.html。

 

函数式编程思想:先构造计算树,然后执行计算树。

 

函数式编程的开发过程是编写计算实现、调用约定、和计算结构的过程;

执行的过程是履行计算约定的过程。

与面相对象做比较:

面向对象是结构的构建,要素是对象与关系;

函数式编程是计算的构建,要素是函数和在遵从调用约定的树上行走的信息流。

 

函数式结构树的构建过程和执行过程都遵从信息流约定。

调用的时机和顺序都有信息流约定来规范。

 

函数式结构树的构建过程只是计算的绑定的过程;从执行的角度看它有另一个术语“惰性求值”:

函数式编程语言还提供惰性求值(Lazy evaluation,也称作call-by-need),是在将表达式赋值给变量(或称作绑定)时并不计算表达式的值,而在变量第一次被使用时才进行计算。

某些编程语言缺省延迟表达式的求值,另一些提供函数或特殊语法来延迟求值。在 Miranda 和 Haskell 中,缺省延迟函数实际参数的求值。在很多其他语言中,可以使用特殊语法明确悬置计算来延迟求值(比如 Scheme 的 "delay" 或 "force"),更一般的通过把一个表达式包装在 thunk 中。表示这种明确延迟求值的对象叫做预期或承诺。

The benefits of lazy evaluation include:

  • The ability to define control flow (structures) as abstractions instead of primitives.

 

结构树的生成与执行:

调用约定、参量约定、信息流约定、promise;

信息流对参量逐步赋值的 过程。

生成的过程是将计算进行保存,而不是使用计算求值的过程。

 

函数式编程需要一些基础设施进行支撑。

根和干的部分由基础设置完成;

枝干和叶子节点由程序员完成。

函数式编程的运行环境都会提供最基本的运算。

 

数据和事件在这个结构树上只相当于信号。

 

统领全局的是输入、输出及处理流程的逻辑,是信息处理的流程。

要关注输出在哪里;通常来说,程序员所做的部分只是整个信息处理系统的一部分。

 

函数式编程与信息处理系统有很多类似的地方;

都是输入信号,然后经过一系列的子系统的处理,最后拿到期望的结果。

 

它的使用场景也有上面的类似性决定:即处理信息和信号流。

 

开发的过程即为为这个信号处理系统添加子系统。

 

不一样的地方在于信号处理系统是单向的;而函数式编程需要使用栈的结构来返回递归和嵌套处理过的值,也包含最终的值。

 

《javascript函数式编程思想》——从面向对象到函数式编程

第9章 从面向对象到函数式编程假如本书的写作时间倒退回十年前,书名可能会变成JavaScript面向对象编程思想。自上世纪90年代兴起的面向对象编程思想随Java的繁荣达于顶点,在JavaScript从一门只被用来编写零星的简单的... 查看详情

kotlin函数式编程思想fpinkotlin

Kotlin函数式编程思想:FPinKotlin函数式编程特性闭包和高阶函数函数编程支持函数作为第一类对象,有时称为闭包或者仿函数(functor)对象。实质上,闭包是起函数的作用并可以像对象一样操作的对象。与此类似,FP语言... 查看详情

《javascript函数式编程思想》——列表

第8章 列表函数式编程与列表处理有很深的渊源。列表是最基础,也是使用最普遍的复合数据类型。作为最早出现的函数式编程语言之一,Lisp【注:它的名称就来源于“列表处理器”(LIStProcessor)】用函数参... 查看详情

js函数式编程思想(v客学院知识分享)

...现在已经更新到ES7,不久ES8规范即将面世,为了是JS语法对函数编程更加友好,诸如RxJS(ReactiveX)等函数式框架的不断流行。函数式编程则应该是以函数做为舰载主体,然后对函数进行拆分封装、更加抽象,可扩展性极强。 与传... 查看详情

函数式编程思想:耦合和组合,第2部分

...者可能会对这一方法的缺点及其他的可选做法视而不见,函数式编程使用不同的构建块来实现重用,其基于的是更一般化的概念,比如说列表转换和可移植代码。函数式编程思想的这一部分内容比较了作为重用机制的经由继承的... 查看详情

函数式编程思想:以函数的方式思考,第3部分

...ealFord发布:2011-07-0611:23:24挑错|查看译者版本|收藏本文在函数式编程思想的第一部分和第二部分中,我考察了一些函数式编程的主题,研究了这些主题如何与Java?及其相关语言产生关联。本篇文章继续这一探索过程,给出来自前... 查看详情

《javascript函数式编程思想》

...快速发展,JavaScript向各个领域渗透的势头仍然强劲。函数式编程的思想和语言原来仅仅在计算机学术圈中流行,近年来它的魅力越来越多地被主流软件开发行业认识到࿰ 查看详情

函数响应式编程(frp)思想-callback风格

...让你的代码像数学一样简洁,业务像流水一样清晰流畅。函数响应式编程响应式编程思想为体,函数式编程思想为用。 响应式编程例如,在命令式编程环境中,a:=b+c表示将表达式的结果赋给a,而之后改变b或c的值不会影响a... 查看详情

《javascript函数式编程思想》——部分应用和复合

第5章 部分应用和复合一等值的函数,是函数式编程的基石。部分应用和复合,则是函数式编程的重要特征。采用命令式编程时,每当我们感觉需要抽象出一个新的功能时,就会定义一个函数。在函数式编程中... 查看详情

函数式编程java函数式编程学习(代码片段)

函数式编程-Stream流函数式编程思想概述面向对象思想关注的是用什么对象完成什么事情,而函数式编程思想就类似于数学中的函数,主要关注的是对数据进行了什么操作优点代码简洁,开发快;接近自然语言࿰... 查看详情

函数式编程java函数式编程学习(代码片段)

函数式编程-Stream流函数式编程思想概述面向对象思想关注的是用什么对象完成什么事情,而函数式编程思想就类似于数学中的函数,主要关注的是对数据进行了什么操作优点代码简洁,开发快;接近自然语言࿰... 查看详情

《javascript函数式编程思想》

...快速发展,JavaScript向各个领域渗透的势头仍然强劲。函数式编程的思想和语言原来仅仅在计算机学术圈中流行,近年来它的魅力越来越多地被主流软件开发行业认识到,Scala、Closure等语言的出现,C#、Java等语言中... 查看详情

《javascript函数式编程思想》——函数是一等值

第4章 函数是一等值在函数式编程的标准或特点中,“函数是一等值”是最基本和重要的,也是最为人所知的,所有介绍函数式编程的书籍和文章都会优先介绍这一点,以至于“一等值”几乎成为函数的专属头衔&... 查看详情

函数式编程思想:耦合和组合,第1部分

...重用的面向对象编程思想的一些影响,并把它们与一些更函数化的可选方法,比如说组合,进行比较。面向对象编程通过封装变动部分把代码变成易懂的,函数式编程则是通过最小化变动部分来把代码变成易懂的。——Mi 查看详情

函数式编程基本概念(代码片段)

编程范式命令式编程(Imperative)声明式编程(Declarative)函数式编程(Functional)面向对象、泛型、元编程也都是很主要的编程范式命令式编程:命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么声... 查看详情

《javascript函数式编程思想》——名称

第1章 名称一般对函数式编程的介绍都会从一等值和纯函数等概念开始,本书却准备在那之前先花些篇章讨论两个通常未得到足够重视的主题:名称和类型系统。前者包括名称绑定、作用域和闭包等内容,后者包括类... 查看详情

如何用函数式编程思想优化业务代码,这就给你安排上!

导语 | 本文将介绍函数式编程中的几个核心概念,以及使用相关的函数式编程来优化业务代码的实践方案。一、前言日常开发中经常会遇到流程分支多、流程长的业务逻辑,如果排期较为紧张的话通常会选择ifelse、switch... 查看详情

《javascript函数式编程思想》——类型系统

...?用户自定义的各种类型与它们又有什么关系?函数也是类型吗?强类型和弱类型意味着什么?它们的区别和类型转换有关吗?静态类型语言中的变量为什么有固定类型而动态类型则没有?多态性就是后期... 查看详情