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