Ⅰ 函数式编程的特性
在经常被引用的论文 “Why Functional Programming Matters”(请参阅 参考资料) 中,作者 John Hughes 说明了模块化是成功编程的关键,而函数编程可以极大地改进模块化。在函数编程中,编程人员有一个天然框架用来开发更小的、更简单的和更一般化的模块, 然后将它们组合在一起。函数编程的一些基本特点包括:
支持闭包和高阶函数,支持惰性计算(lazy evaluation)。使用递归作为控制流程的机制。加强了引用透明性。没有副作用。我将重点放在在 Java 语言中使用闭包和高阶函数上,但是首先对上面列出的所有特点做一个概述。 副作用是修改系统状态的语言结构。因为 FP 语言不包含任何赋值语句,变量值一旦被指派就永远不会改变。而且,调用函数只会计算出结果 ── 不会出现其他效果。因此,FP 语言没有副作用 。
Ⅱ 函数式编程和反应式编程有什么区别
函数式编程是种编程范式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambdacalculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。
Ⅲ 函数式编程有什么弊端
我接触过Haskell、Clojure和其他语言,也做过PL的“研究”。可以浅谈一下:
函数的复杂度
分析Haskell程序的时间和空间复杂度是很麻烦的。首先编写Haskell程序往往是很多“重用”内置/自定义数据结构,以实现数据持久性(或“不变性”)可以增加空间和时间消耗(实现策略有很多,但采取临时解决方案不影响永久治愈),优点是控制副作用。然后,函数组合和高阶函数可能代价昂贵,可以生成额外的中间数据。其优点是抽象能力强,模块化是有益的。最后,惰性评价使过程评价模型复杂,滥用可导致效率的降低。功能语言的分析工具也较少。
但是这些提供了细粒度的模块化,程序员需要更多的“设计”。“使用函数式编程的程序员必须努力确保程序使用更小、更简单、更通用的模块,”Huges说。这是一个挑战。
而且,模块之间的交互也是一个问题。
Ⅳ 什么是函数响应式编程
函数响应式编程(Functional Reactive Programming:FRP)是一种和事件流有关的编程方式,其角度类似EventSoucing,关注导致状态值改变的行为事件,一系列事件组成了事件流。
FRP是更加有效率地处理事件流,而无需显式去管理状态。
具体来说,FRP包括两个核心观点:
1.事件流,离散事件序列
2.属性properties, 代表模型连续的值。
一系列事件是导致属性值发生变化的原因。FRP非常类似于GOF的观察者模式。
Ⅳ 如何用函数编程
在各门语言里面都有许多内置函数,用到的时候需要去调用,当然也有一些函数需要自己编写,视情况而定
Ⅵ 什么是(函数性)反应式编程
额,这个概念我也是没好好听过哦!本人理解为函数式编程和响应式编程是独立的编程方式;函数式编程是种编程典范,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambdacalculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。(有点高深的样子哦,其实没必要纠结了,去做就行)