Javascript可以实现面向对象,但Ruby不能实现函数式编程?

问题描述:

即时通讯新的“真正的”Javascript:ing我知道更多的函数式编程。Javascript可以实现面向对象,但Ruby不能实现函数式编程?

看来,在Javascript中,你可以从两个世界中获得最好的功能和面向对象编程。

但是在Ruby中,您没有头等函数(函数作为数据类型)。

这是否意味着Javascript支持两全其美,而Ruby仅支持面向对象的编程风格?

+7

(我不确定我是否会称JavaScript为“两全其美”......) – 2010-09-26 15:04:31

+7

-1用于讨论ruby,而对语言没有丝毫的线索。 – glebm 2010-09-26 16:24:39

+0

匿名函数不是一种功能性语言。 – NullUserException 2010-09-26 17:29:36

红宝石确实有一流的功能。是什么让你觉得它不? *:具有一流的功能的语言是其中:

该语言支持的程序的执行过程中构建新的功能,将它们存储在数据结构中,将它们作为其他函数的参数,并将它们作为其他函数的值返回。

你可能挂了这样的事实:Ruby的特效/ Lambda表达式需要通过call()被调用,但这不会对他们的影响firstclassness。 Common Lisp lambdas也被调用funcall以及我不记得任何人声称Common Lisp没有头等功能。

+2

sepp2k:看到这里:http://cl-cookbook.sourceforge.net/functions.html看来,在普通的lisp(不像scheme)你需要调用一个lambda(绑定到一个变量)'funcall' :例如(let((foo(lambda(x)x)))(funcall foo y)) – horseyguy 2010-09-26 17:20:39

+0

当然,你是对的。我一度困惑。 – sepp2k 2010-09-26 17:28:28

功能性编码与功能性语言编码有区别。 Ruby可能没有很多功能语言的功能,但是如果你学会了功能性的思考,你会找到方法来使用Ruby来达到这个目的。

真正重要的是范式 - 您用于构建解决方案的思维过程。函数式语言可用于编写过程式代码(就像OO语言一样),但如果您了解不同的范例,则可以应用最适合您的方案的方法。

如果你到书,我很喜欢“Real World Functional Programming”(与飞碟双向先生合着)

+0

是不是有关函数式编程,但使用JavaScript的好书? – 2010-09-26 15:12:12

+0

没有具体的,我可以推荐 – STW 2010-09-26 15:17:14

+0

你想做什么?功能方法适用于特定类型的问题,除了数学和科学之外,您通常需要使用第二种语言来实现您的目标(或支持在无状态/纯功能代码和有状态之间划出界限的语言/真实世界的代码) – STW 2010-09-26 15:19:00