answer到Is Javascript a Functional Programming Language?说:
功能编程意味着程序被概念化为功能的评估,而不是控制流程。代码是函数的描述,并没有控制流的固有概念。
我已经了解到,当一种语言支持第一类功能,并且没有控制流程时,从其设计目标来看,它必须被定义为一种功能语言。
那么为什么Smalltalk,一种函数式语言,不支持其他功能特性,如不变性,代数数据类型,模式匹配,部分应用?
答案 0 :(得分:6)
Smalltalk是在虚拟机提供的以下功能之上设计的
#basicNew
和#basicNew:
原语send
字节码系列[:arg | ...]
语法(见下文)[:arg | ... ^result]
语法添加了现代实施
#ensure:
消息请注意其他"功能"例如Smalltalk编译器,调试器或异常机制不在列表中,因为它们可以从其他人派生(即,它们在用户代码中实现。)
这些功能被确定为通用面向对象环境的基本构建块,意味着在裸机上运行(即没有操作系统支持。)
设计师的想法不是功能编程。相反,他们想到每件事都是一个对象,每一个计算都是一个消息发送统一的比喻。为此,区块和非本地回报起到了建模和功能的作用。作为对象,以确保每个已知的概念都包含在OO范例中。这并不意味着他们将函数式编程作为目标。他们没有包含其他功能(功能与否),因为他们试图识别一组最小的原始元素,这些原始元素将支持没有障碍的通用系统。