在面向对象编程中,我们可以说核心概念是:
在函数式编程中会是什么呢?
发布于 2009-07-11 04:38:09
对于函数式编程中的基本概念是什么,社区并没有达成共识。在Why Functional Programming Matters (PDF)中,John Hughes认为它们是高阶函数和惰性求值。西蒙·佩顿·琼斯在“Wearing the Hair Shirt: A Retrospective on Haskell”中说,真正的本质不是懒惰,而是纯洁。理查德·伯德会同意的。但是有一大群Scheme和ML程序员,他们非常乐意编写有副作用的程序。
作为一个实践和教授函数式编程20年的人,我可以给你一些被广泛认为是函数式编程核心的想法:
核心是具有适当词法作用域的
qsort!)可以用C编写,它不是将函数和其他函数组合在一起来解决问题的函数language.)发布于 2009-07-11 02:35:53
在计算机科学中,函数式编程是一种编程范例,它将计算视为数学函数的求值,并避免状态和可变数据。它强调函数的应用,而命令式编程风格则强调状态的变化。函数式编程起源于lambda演算,这是20世纪30年代开发的一个正式系统,用于研究函数定义、函数应用和递归。许多函数式编程语言都可以看作是对lambda演算的修饰。- Wikipedia
简而言之,
微积分
发布于 2009-07-11 03:24:21
不是直接回答你的问题,但我想指出“面向对象”和函数式编程并不一定是矛盾的。你引用的“核心概念”有更一般的对应物,同样适用于函数式编程。
封装,更广泛地说,是模块化。据我所知,所有纯函数式语言都支持模块化编程。您可能会说,这些语言比典型的“面向对象”语言更好地实现封装,因为副作用破坏了封装,并且纯函数没有副作用。
继承,更一般地,是逻辑隐含,这是一个函数所代表的。正则subclass -> superclass关系是一种隐函数。在函数式语言中,这是用类型类或隐含来表示的(我认为隐含是这两个中更通用的一个)。
"OO“学派中的多态性是通过子类型(继承)实现的。还有一种更一般的多态性,称为参数多态性(也称为。泛型),您会发现纯函数式编程语言支持它。此外,一些支持“更高种类”,或更高阶泛型(也称为。类型构造函数多态性)。
我想说的是,您的“OO核心概念”并不是以任何方式特定于OO的。作为一个人,我会争辩说,事实上,OO没有任何核心概念。
https://stackoverflow.com/questions/1112773
复制相似问题