学习Scala作为第一个功能性的'语言?

时间:2014-11-18 19:29:18

标签: scala functional-programming

因为Scala是一个“OO符合功能”的功能。语言,对我来说,学习Scala作为我的第一个函数语言是一个好主意,因为我知道大多数OO概念(来自学习Java)?

或者,如果我学习了像Haskell这样的纯函数式语言,然后将我的OO和函数式编程的知识混合在一起,那么我会更好地理解Scala吗?

由于函数式编程与我以前的版本大不相同,我想确保以一种方式学习这些概念,然后我可以在函数式语言和函数式语言之间进行转换而不会被OO和仅与Scala相关的功能概念。

2 个答案:

答案 0 :(得分:2)

我推荐一种比Scala更明确地公开其FP特征的语言。您仍然可以在Scala中编写OO代码而不必直接插入FP。

如果你想要学术纯洁,那就去学习Haskell吧。这种语言现在拥有丰富的生态系统并且正在获得牵引力,并且绝对是生产准备好的,所以你不必害怕你学到的东西会丢失。 http://learnyouahaskell.com是一个很好的起点,可以在网上免费获得。

在某些时候,你可能想学习一种Lisp方言。今天有很多可用的,取得了不同程度的成功,但你可能听说过Clojure,它运行在JVM之上。

我不知道有任何好的免费资源,但我可以推荐https://pragprog.com/book/shcloj2/programming-clojure。这本书有点陈旧 - 它涵盖1.3版本,我们目前接近1.7 - 但仍然相关,并且直截了当。一旦你经历了这样的事情,你已经准备好了更多的东西,比如Fogus的“Clojure的喜悦”。

在Clojure中还有一个充满短编程问题的网站,我建议您查看 - 谷歌搜索'4Clojure'。

答案 1 :(得分:1)

Scala是一种非常好的第一种函数式编程语言。在学习Scala之前,我个人并不了解Haskell。学习Scala意味着唯一的新部分是函数式编程部分。您不必担心完全不同的语法或类型系统,并且您不必仅仅为了简单的IO而了解monad。要确保您的学习内容可以转移,请不要使用任何vars,只需vals

在某一时刻,Scala的类型系统变得笨拙,因为你潜入了暗示,协方差和逆变的深渊,试图使用monad这样的概念。那时,你将有足够的函数编程背景来切换到Haskell并且实际理解它。 Haskell的类型系统更适合这类主题。

换句话说,Scala使初学者功能编程概念变得简单,但高级概念更难,这使它成为一种非常好的网关语言。