Ruby真的可以用作功能语言吗?教授这个方面的一些好的教程是什么?注意:我真的想使用和坚持Ruby作为我的主要语言,所以我不感兴趣转换为YAFL(另一种功能语言).我对Ruby的功能方面对标准功能语言基线的表现感兴趣.谢谢.
解决方法
是的… Ruby缺乏一个合理的结构来强制实现不变性. (对象#冻结不计数)不变性真的是功能语言的基石.此外,Ruby的核心库非常面向强制性设计.它的Array和Hash类本质上都是可变的,即使String也有使不可变的方法(例如gsub!).讽刺的是,Java在这方面比Ruby更“功能”.
就这样说,可以在Ruby中执行类似功能的编程.任何时候使用block / proc / lambda,你都使用功能编程的功能.同样,地图和zip等收集方法也是高阶构造,它们的根源在于Lisp,ML和Haskell等语言.
如果你真的想做功能性编程,你将需要使用一种更符合这种类型的语言.一些建议:
> Clojure – 由于您使用Ruby表达了这个问题,我猜你是动态类型的说服力. Clojure就像一个在JVM上运行的严格功能的Lisp.
> F# – 基本上OCAML在CLR上.非常好,很干净
> Scala – 不是严格的功能语言,但比Ruby好得多
> Haskell – 大家最爱!
您会注意到,这四种语言中的三种是静态类型的.事实上,在Scala和Haskell的情况下,这些是非常静态的类型语言(比Java更强大的类型系统).我不知道为什么这是功能语言的一个趋势,但是你有这个趋势.