当前位置: 首页 > 开发知识 >

函数式编程那些事儿

作者:游戏app开发公司 阅读: 发布时间:2024-08-19 15:01

摘要:Clojure,CommonLisp,Erlang,Haskell和Scala是遵循函数式编程方法的一些著名编程语言。C ++ 11,C#3.0...

函数式编程是一种编程范式,在其中它试图将每个函数都绑定到纯数学函数中。这是一种声明式的编程风格,着重于解决什么而不是如何解决。

函数式编程实例__函数式编程的概念

Clojure,Common Lisp,Erlang,Haskell和Scala是遵循函数式编程方法的一些著名编程语言。编程范例基于lambda演算,下面简要说明:

Lambda演算

它使用表达式来代替语句。与执行语句以分配变量的语句不同,表达式的求值产生一个值。Lambda演算构成了几乎所有使用的功能编程语言的基础。

Lambda Calculus由Alonzo Church开发,是用于研究具有函数的计算的框架。使用lambda演算认为任何事物都是可计算的。它可以被标记为所有语言中最简洁的编程语言。

就计算能力而言,lambda演算类似于图灵机,后者为命令式编程奠定了基础。简单来说,lambda演算是一个描述函数及其评价的理论框架。

纯函数

纯函数具有两个重要属性,它们是:

由于纯函数没有副作用或隐藏的I / O,因此使用函数范式构建的程序易于调试。此外,纯函数使编写并发应用程序更加容易。

使用函数式编程风格编写代码时,有能力的编译器将能够:

递归

在函数式编程范例中,没有for和while循环。相反,函数式编程语言依赖于递归进行迭代。递归是使用递归函数实现的,递归函数会重复调用自己,直到达到基本情况为止。

引用透明性

一旦在函数式编程语言中定义了变量,就不允许在程序执行期间更改它们持有的值。这称为引用透明性。它确保相同的语言表达式给出相同的输出。

功能程序没有任何赋值语句。为了在使用功能编程开发的程序中存储其他值,必须定义新变量。在这样的程序中,变量的状态在任何时候都是恒定的。

引用透明性几乎消除了任何不良影响的可能性,这是因为在程序执行的任何时候都可以用其实际值替换任何变量。

函数式编程的概念_函数式编程实例_

函数是一流的,可以是高阶的

函数式编程风格的函数被视为变量。因此,它们是一流的功能。这些一流的函数被允许作为参数传递给其他函数,或者从函数返回或存储在数据结构中。

高阶函数是将其他函数用作参数和/或返回函数的函数。在函数式编程语言中,一等函数可以是高阶函数。

变量是不可变的

变量是不可变的,即变量一旦初始化就无法修改。尽管我们可以创建一个新变量,但不允许修改现有变量。

函数式编程语言中变量的不变性质以在整个程序执行过程中保持状态的形式受益。

优点缺点应用领域

通常,函数式编程语言通常首选用于学术目的,而不是用于商业软件开发。

但是,遵循功能性编程范例的几种杰出的编程语言,例如Clojure,Erlang,F#,Haskell和Racket,被广泛用于开发各种商业和工业应用。

WhatsApp利用Erlang(一种遵循功能性编程范例的编程语言)让100多名员工即可管理超过15亿人的数据。

函数式编程风格的另一个重要语言是Haskell。Facebook在其反垃圾邮件系统中使用了它。甚至JavaScript(使用最广泛的编程语言之一)也喜欢使用函数式编程。

函数式编程风格对于各种编程语言引领不同领域至关重要。例如,统计中的R和财务分析中的J,K和Q。

领域特定的声明性语言(例如Lex / Yacc和SQL)甚至使用这种编程范例的某些元素来避开可变值。

通常,此范例广泛用于:

总结

除了纯函数式编程语言外,还可以在非函数式编程语言中建立函数式编程方法。

C ++ 11,C#3.0和Java 8都添加了用于简化书写风格的函数式编程。

尽管通常以功能样式编写,但是Scala具有副作用和易变状态的存在。因此,可以将编程语言置于命令式和功能性编程样式之间的中间状态。

  • 原标题:函数式编程那些事儿

  • 本文由游戏app开发公司小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与迪集网络联系删除。
  • 微信二维码

    CLWL6868

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员

    点击这里给我发消息电话客服专员

    在线咨询

    免费通话


    24h咨询☎️:132-5572-7217


    🔺🔺 24小时客服热线电话 🔺🔺

    免费通话
    返回顶部