一种语言应该被认定为一种功能性语言的特征是什么?当我们可以说语言XYZ
支持功能范式?当语言符合功能语言的标准吗?
1
A
回答
2
什么是语言应具有的特质被认定为功能性的语言吗?当我们可以说一种语言XYZ支持功能范式?
这是两个不同的问题。我会说,“支持功能范式”是指:
- 你可以用函数的工作就像与其他类型(在局部变量,参数使用它们,...)
- 可以定义匿名函数(又名lambda函数)在线
- 匿名函数可以访问他们的环境声明的变量(这被称为闭包)
根据这个定义,几乎任何现代主流编程语言支持功能模式(以C除外)。
要被归类为“功能语言”,语言需要关注功能范式作为其主要范式或唯一范例,包括不变性和专注于纯粹(无副作用)功能。除了以上,这通常意味着:
宣告不变类型,如识别联合模式匹配- 支持由表情,不发言
1
一种具有一流功能的语言将允许您使用功能范例编写程序。
成为一流的功能意味着什么?
它们可以被分配到变量
let f = x => x + 5; f(3); // 8
它们可以作为参数传递给其他函数
let xs = [1,2,3]; let f = x => x * 2; xs.map(f); // [2,4,6];
他们可以是一个函数的返回值
let add = function(x) { return y => x + y; }; add(1)(2); // 3
它们可以被包含在数据结构
let pikachu = { number: 25, shock: enemy => enemy.damage(30), growl: enemy => enemy.sadden(40) }; pikachu.growl(meowth); // "It's very effective!"
+1
我不t认为这就足够了,通过这个定义,C是一个函数式语言,因为它有函数指针。 – svick
相关问题
- 1. Python不是标准化语言吗?
- 2. 跨语言编码标准?
- 3. 标准化语言转换?
- 4. 功能的“自然语言”
- 5. Lisp语言的功能
- 6. NAO能讲当地语言吗?
- 7. Javascript作为功能语言
- 8. CodeIgniter动态语言功能
- 9. 功能汇编语言
- 10. 符合I18n标准的中文语言环境
- 11. 语言功能vs框架功能
- 12. 将语言功能集成到其他语言中
- 13. 语言标识符值
- 14. 没有标准库的语言引擎
- 15. 语言性能
- 16. 笨多语种语言标识符
- 17. 字符/语言
- 18. Android TTS支持语音合成标记语言吗?
- 19. Lua是否有语言标准?
- 20. 使用内部连接标准语言
- 21. JPA查询语言标准构建器
- 22. 如何获得Verilog语言标准?
- 23. 什么语法糖或语言功能使语言难以解析?
- 24. 如何在Clojure特定功能语言或一般功能语言中实现按合同设计?
- 25. Android 7的Java 7语言功能
- 26. 功能语言的建筑思维
- 27. 黄瓜 - 多语言站点的功能
- 28. 做MapReduce的最佳功能语言?
- 29. Jsreport的多种语言功能
- 30. 纯功能语言中的高效堆
这里的匿名函数的意义是什么? – vivek
@vivek我不太明白你在问什么。你是否问为什么这些函数必须是匿名的,当你可以命名闭包? – svick
你的解释是相当不错的,但是假设我不知道闭包,那么匿名函数如何帮助语言支持函数式编程。 – vivek