Ruby真的可以用作函数式语言吗?教这个语言方面有哪些好的教程?注意:我真的想使用并坚持使用Ruby作为我的主要语言,因此我对此转换为YAFL(另一种函数式语言)并不感兴趣.我真的很感兴趣Ruby的功能方面对标准功能语言基线的表现如何.谢谢.
是的......有点儿.Ruby缺乏合理的构造来强制实现不变性.(Object#freeze
不计)不变性实际上是函数式语言的基石.此外,Ruby的核心库非常注重命令式设计.它Array
和Hash
类本质上都是可变的,甚至String
还有使不可变的方法(例如gsub!
).具有讽刺意味的是,Java在这方面比Ruby更具"功能性".
话虽如此,可以在Ruby中进行类似功能的编程.无论何时使用块/ proc/lambda,您都使用来自函数式编程的功能.同样,收集方法喜欢map
和zip
也是高阶构造,它们的根源在于Lisp,ML和Haskell等语言.
如果您真的想要进行函数式编程,那么您将需要使用更适合该类型的语言.一些建议:
Clojure - 因为你用Ruby来表达这个问题,我猜你是动态类型的说服力.Clojure就像一个在JVM上运行的严格功能的Lisp.
F# - 基本上是CLR上的OCaml.非常好,非常干净
Scala - 不是一种严格的函数式语言,但它比Ruby更好
Haskell - 每个人都喜欢!
您会注意到这四种语言中有三种是静态类型的.实际上,在Scala和Haskell的情况下,这些是非常静态类型的语言(比Java更强大的类型系统).我不确定为什么这是函数式语言的趋势,但你有它.