什么是函数式编程
函数式编程相对应的是命令式编程
比方说你要定义一个方法
命令式编程如下:
def func1():
而同样功能的函数式编程如下:
func1 = lambda :
Ⅱ 函数式编程的特点
其实函数式编程的话你也要学计算机就会知道。
Ⅲ 式编程,命令式编程()和函数式编程的区别
编程语言主要有四种类型
声明式编程:专注于”做什么”而不是”如何去做”。在更高层面写代码,更关心的是目标,而不是底层算法实现的过程。
ex: css, 正则表达式,sql 语句,html, xml…命令式编程(过程式编程) : 专注于”如何去做”,这样不管”做什么”,都会按照你的命令去做。解决某一问题的具体算法实现。
函数式编程:把运算过程尽量写成一系列嵌套的函数调用。
函数式编程强调没有”副作用”,意味着函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。
所谓”副作用”(side effect),指的是函数内部与外部互动(最典型的情况,就是修改全局变量的值),产生运算以外的其他结果。
Ⅳ 函数式编程的最小维度是函数吗
是。函数式编程是一种编程范式,在函数式编程中,最小维度的式子是函数。函数的定义通常分为传统定义和近代定义,函数的两个定义本质是相同的,只是叙述概念的出发点不同。
Ⅳ 什么是函数式编程思维
试着把函数想象成一个根据一个指定输入产出指定输出的黑盒,就能简化成逻辑电路中的各种门的样子或者是各种流通管道的样子。
然后试想数据通过这些组合起来的管道/门,变成你要的结果。
或者是通过现有的管道或门,构建(抽象)出更复杂/更通用的管道/门。
这就是函数式编程。
任何支持函数的语言都可以进行函数式风格的编程 注意到与命令式风格不同的是没有赋值,这意味着reason 程序的时候每个变量的值是不变的 不用考虑程序变量随着时间的变化 -- 大大降低了程序的复杂性。
既然C/C++(98) 也能进行函数式风格的编程 为什么不认为它是一门函数式语言呢,因为需要容易的进行函数式编程需要以下几个语言特性支持
closure
按照上面的三条规则函数式是first class 的 是可以直接传递作为参数的,而因为lambda演算作用于是lexical scope 的,variable capture 意味着语言要支持GC才能更方便的操作。 这意味着像Java(8以前), C/C++ 这两门工业界语言函数式编程并不非常适合.
2. 高阶类型推断
因为函数可以作为参数,其类型可以非常复杂 比如下面的函数类型其实非常普遍:
val callCC : (('a -> 'b -> 'c) -> ('a -> 'c) -> 'd) -> ('a -> 'c) -> 'd
如果没有类型推断,其实很难写对或者理解它的语义
3. tail-call
因为函数式风格没有赋值,也就没有for循环, 要实现循环操作 只能通过递归调用, 比如下面简单的例子:
let rec even n = if n = 0 then true else if n = 1 then false else odd (n - 1)
and odd n = if n = 1 then true else if n = 0 then false else even (n - 1)
这需要编译器保证上面的例子不能有stackoverflow 能提供这样保证的编译器并不多,比如所谓的 "函数式" 语言scala 就不能提供这种保证 也就实际上不是函数式语言.
相比函数式风格我觉得更重要的一个语言特性的时代数数据类型和模式匹配
Ⅵ 求科普什么是函数式编程语言
实际上,函数式编程没有一个严格的官方定义。严格上来讲,函数式编程中的“函数”,并不是指我们编程语言中的“函数”概念,而是指数学“函数”或者“表达式”(例如:y=f(x))。不过,在编程实现的时候,对于数学“函数”或“表达式”,我们一般习惯性地将它们设计成函数。所以,如果不深究的话,函数式编程中的“函数”也可以理解为编程语言中的“函数”。
Ⅶ 什么是函数式语言
函数式语言(functional language)一类程序设计语言.是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数、定义函数和函数型.这种语言具有较强的组织数据结构的能力,可以把某一数据结构(如数组)作为单一值处理;可以把函数作为参数,其结果也可为函数,这种定义的函数称为高阶函数.程序就是函数,程序作用在结构型数据上,产生结构型结果,从根本上改变了冯·诺伊曼式语言的“逐词”工作方式.
函数式语言具有简明性和独特的表达能力,因此可用它来研究传统程序设计语言的语义.巴科斯<Backus,J.)分析了传统程序设计语言的缺陷,认为这些缺陷主要是采用冯·诺伊曼式系统结构所造成的.巴科斯提出的函数式程序设计系统FP摆脱了传统的冯·诺伊曼计算机结构,因此,需要一种新型的非冯·诺伊曼式的系统结构为后援.
Ⅷ 什么是函数式编程思维
面向过程(函数式)的编码流程。思想。相对的还有面向对象的编程思想(oop) 面向过程的编程 比如c语言,汇编,全局函数那种,不用类的。都是函数式编程。面向过程优点 运算快,简单,缺点复杂项目时各种全局函数调用非常头疼,无法区分关系。
Ⅸ python是函数式编程吗
python是函数编程
函数编程定义:
1、"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。
2、它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。[2]
Ⅹ C语言是函数式编程语言吗
函数式编程是种编程范式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是 λ 演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。
所以说JavaScript算是函数式编程语言。