Ruby真的可以用作函数式语言吗?有哪些很好的教程来教授这方面的语言呢?注意:我真的很想使用并坚持使用Ruby作为我的主要语言,所以在这一点上我对转换成YAFL (又一种函数式语言)不感兴趣。我真正感兴趣的是Ruby的函数式方面相对于标准函数式语言基线的表现如何。谢谢。
发布于 2008-10-17 18:39:50
Yes...sort of.Ruby缺乏一个合理的构造来强制实现不变性。(Object#freeze不算)不可变性确实是函数式语言的基石。此外,Ruby的核心库高度面向命令式设计。它的Array和Hash类本质上都是可变的,甚至String也有使其成为不可变的方法(例如gsub!)。具有讽刺意味的是,Java在这方面比Ruby更“实用”。
也就是说,可以在Ruby中进行类似函数式的编程。无论何时使用块/proc/lambda,您都在使用一个来自函数式编程的特性。同样,像map和zip这样的集合方法也是更高阶的构造,它们在Lisp、ML和Haskell等语言中找到了根源。
如果你真的想做函数式编程,你会想要使用一种更适合这种类型的语言。一些建议:
您会注意到,这四种语言中有三种是静态类型的。事实上,在Scala和Haskell的例子中,这些都是非常静态类型的语言(比Java强得多的类型系统)。我不确定为什么这是函数式语言中的一种趋势,但你已经知道了。
发布于 2008-10-17 18:37:59
这取决于你所谓的“函数式编程”是什么意思。在我看来,最重要的是函数是first class values的,在这方面,Ruby语言是一种函数式语言。
发布于 2008-10-17 18:40:50
它有一套相当全面的列表理解--参见Martin Fowler's article。然而,它的类型系统并不像Haskell那样强大。而且,它的关注点并不像函数式语言那样关注不变性。
https://stackoverflow.com/questions/213312
复制相似问题