我应该选择哪种函数式编程语言作为第一种函数编程语言?

txx*_*xwq 19 functional-programming

我想学习一种函数式编程语言来查看不同的编程范例.

我的编程背景:Java(我刚刚通过了SCJP考试),一些ruby和非常有限的Rails.我使用bash进行基本的sysadmin任务.我使用的是Ubuntu 9.04.

作为第二个目标,我想用fp向孩子(14-18岁)展示数学和cs是如何相互关联的.这些人非常擅长编程(他们从第一年开始在politechnical高中学习Python和Java).然而,正如测试所示,他们在数学方面存在困难.离散数学的基本概念.我认为我们可以通过编程来发展他们的数学技能(我可能这可能是我的教师培训论文的主题).我认为一种具有非常基本词汇的语言最适合这个项目.

JSB*_*ոգչ 17

我投票支持Haskell,它具有以下优点:

  • 在Haskell中,简单的情况实际上很简单
  • 复杂的案例(通常)仍然可以被普通的人类思想所理解
  • 它有一个普通的语法,与其他非函数式编程语言没有太大区别(不像Lisp)


Jon*_*Jon 12

我是Scheme的忠实粉丝,尤其是因为最好的书是免费提供的.


Nor*_*sey 10

如果您的主要目标是与青少年合作,那么使用功能语言教学法和技术已被证明与青少年合作是有意义的,那就是PLT Scheme(又名DrScheme)和如何设计程序书(也在线免费) ).这些家伙从中学到第三学期大学都取得了很好的成绩.他们也为教师提供资源.

许多受访者喜欢SICP.这是一本很棒的书 - 但不是要 学习.如果您已经了解Scheme,那么它是一本值得欣赏的书,但是SICP不是关于函数式编程,而是更多关于如何在Scheme中实现所有已知的有趣的计算机科学思想.

如果你的主要目标是学习一个真正新的编程范例,那么Scheme缺少一些对许多函数式程序员非常重要的特性:

  • 用模式匹配编程
  • 部分应用curried函数
  • 多态静态类型系统
  • 纯函数计算

如果你想要激动人心的想法,试试Haskell ; Haskell使你用新语言编写旧思想变得更加困难.相反,Haskell迫使你思考新想法.除了许多其他资源,Real World Haskell也是免费在线的.

最后说明:SO 在学习函数式编程方面有许多类似的问题.


Coo*_*une 8

Scala和Clojure都运行JVM,因此您可能更熟悉它们的环境.

  • 鉴于Java中已有的背景,这些可能是理想的选择.如果他有Microsoft背景我会推荐F#. (2认同)

Bil*_*l K 7

我试试Scala.它不是纯粹的功能,它允许您使用各种方法 - 但是您的大部分Java知识都应该移植(基于JVM),包括JDK库,它是我见过的最先进的语言之一.

如果您对学习语言功能和扩展您的语言工作知识感兴趣,我无法想象一个更好的选择.