函数式编程

最近在学习 cats-effect(一个scala的工具库),涉及大量函数式编程的概念。

​ 因此我特地简单梳理了函数式编程:

​ 在计算机科学中,函数式编程是一种编程范式----一种构建计算机程序的结构和元素的的风格----将计算过程视为数学函数,避免改变状态和使用可变状态。是一种 declarative programming paradigm。符合函数式编程的函数是冥等的,也就是说:函数的返回值只依赖于传入的参数的值,用相同的参数调用函数总是返回相同的值。和 imperative programming相反,在 imperative programming中,程序的全局状态能影响函数的返回值。消除 side effects, 也就是函数的输入不影响函数的状态。在计算机科学中,如果**一个函数(操作,函数,或表达式)**改变的它的作用域之外的状态变量的值,也就是说除了返回一个值(主要影响),还有有一个可观测的其它影响,那么,我们说它有side effects。side effects的例子有:改变非本地变量,改变静态的本地变量,修改通过引用传递的可变参数,I/O操作,或者调用其它side effects函数。一个side effects的函数的返回可能结果依赖于它的历史调用,也就是说,不用时间调用该函数可能会返回不同的结果。

​ 概括来说:符合函数式编程的函数是冥等、没有的side effects;我们说一个函数有side effects是指调用该函数可能会改变全局状态,该函数的调用次数不同结果也可能不同。

参考自维基百科Functional_programming

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值