函数式编程适用于哪种类型的问题?

11

函数式编程似乎是计算机科学中越来越受到关注的范式。

我想知道在哪些问题上使用函数式编程方法比传统的面向对象方法更加有效。

谢谢。


1
解决许多问题,子问题,甚至是子子问题... ;) - willasaywhat
1
我不确定是否应该从计算机科学的角度来看,将OO描述为“更传统”的方法。 OO起源于60年代末的Simula;功能与50年代末的LISP相结合。 Smalltalk是第一个明确标记为“面向对象”的语言,与ML同时开发,可以被视为第二代函数式编程语言的开始。 - cjs
可能是为什么使用函数式语言?的重复问题。 - Roger Pate
12个回答

7

函数式编程最适合大多数问题,包括一般情况下使用面向对象编程的所有内容,除了可能需要存储大量状态或其他副作用的问题。除此之外,FP比OOP更优美地处理复杂问题,因为它有很多数学背景(从lambda演算开始)。在抽象和组合方面,您具有更高的灵活性。通过使用更多的功能构造来重构具有许多设计模式的面向对象程序,将使您能够在不编写设计模式所需的样板结构的情况下执行相同的操作。除了数学和解析之外,FP也广泛应用于人工智能(特别是Lisp)。


6

函数式编程非常适合创建可以进行并行执行的程序,因为它们不鼓励使用全局状态。


6

这是一条注释而不是一个问题,对吧? - joel

4

函数式编程语言在数学和统计学中被广泛使用。


3

进一步讲述并行执行的观点,函数式语言往往适用于图形建模,如光线追踪。


2

我同意Galwegian的观点 -

"函数式语言在数学和统计学中被广泛使用。"

然而,这并不是唯一的用途。随着函数式编程语言变得越来越主流,你可能会开始发现用这些语言编写的商业课程/库/软件。


2
几乎所有与数学相关的内容都需要翻译。

2
例如,函数式语言ML非常适合实现编译器和其他操纵树的应用程序。

1

如果你正在编写C++模板,那么你正在使用一种纯函数式语言。


1

XSLT 是一种函数式编程语言的例子,用于对表示为 XML 的数据或文档进行转换,尽管它非常冗长且受限。如果我没记错的话,XQuery 也是纯函数式的。关键在于它们没有任何全局状态的概念,它们依赖于宿主程序提供数据并消耗它们的结果。这有助于保持 XSLT 程序(样式表)纯净和可重用,但您需要添加某种(命令式)框架来将其用作通用处理系统的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接