首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby真的可以用作函数式语言吗?

Ruby真的可以用作函数式语言吗?
EN

Stack Overflow用户
提问于 2008-10-17 18:31:47
回答 6查看 1.2K关注 0票数 10

Ruby真的可以用作函数式语言吗?有哪些很好的教程来教授这方面的语言呢?注意:我真的很想使用并坚持使用Ruby作为我的主要语言,所以在这一点上我对转换成YAFL (又一种函数式语言)不感兴趣。我真正感兴趣的是Ruby的函数式方面相对于标准函数式语言基线的表现如何。谢谢。

EN

回答 6

Stack Overflow用户

发布于 2008-10-17 18:39:50

Yes...sort of.Ruby缺乏一个合理的构造来强制实现不变性。(Object#freeze不算)不可变性确实是函数式语言的基石。此外,Ruby的核心库高度面向命令式设计。它的ArrayHash类本质上都是可变的,甚至String也有使其成为不可变的方法(例如gsub!)。具有讽刺意味的是,Java在这方面比Ruby更“实用”。

也就是说,可以在Ruby中进行类似函数式的编程。无论何时使用块/proc/lambda,您都在使用一个来自函数式编程的特性。同样,像mapzip这样的集合方法也是更高阶的构造,它们在Lisp、ML和Haskell等语言中找到了根源。

如果你真的想做函数式编程,你会想要使用一种更适合这种类型的语言。一些建议:

  • --既然你用
    • 表达了这个问题,我猜你是一个动态类型的说服者。Clojure就像一个运行在JVM.
    • 上的严格功能的Lisp --基本上就是CLR上的OCaml。非常好,非常clean
    • -不是一种严格的函数式语言,但比Ruby
    • 更好-每个人的最爱!

您会注意到,这四种语言中有三种是静态类型的。事实上,在Scala和Haskell的例子中,这些都是非常静态类型的语言(比Java强得多的类型系统)。我不确定为什么这是函数式语言中的一种趋势,但你已经知道了。

票数 12
EN

Stack Overflow用户

发布于 2008-10-17 18:37:59

这取决于你所谓的“函数式编程”是什么意思。在我看来,最重要的是函数是first class values的,在这方面,Ruby语言是一种函数式语言。

票数 4
EN

Stack Overflow用户

发布于 2008-10-17 18:40:50

它有一套相当全面的列表理解--参见Martin Fowler's article。然而,它的类型系统并不像Haskell那样强大。而且,它的关注点并不像函数式语言那样关注不变性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/213312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档