当前位置:  开发笔记 > 编程语言 > 正文

功能编程:最佳平台/环境

如何解决《功能编程:最佳平台/环境》经验,为你挑选了6个好方法。

我最近一直在研究和使用函数式编程,仅仅是为了拓宽我对编程的思考,因为我发现思维"功能上"很难.

我已经下载了Glasgow Haskell并对其进行了实验.

我想知道的是,Windows试用FP的最佳平台是什么?我更喜欢基于JVM的方法,但SO上的另一篇文章表明,由于缺乏对尾递归的支持,无法在JVM上实现真正的FP语言.怎么说你?

编辑:正如我所说,我已经与Haskell进行了相当多的尝试; 根据其中一个答案的建议,我一直在审查Scala网站.查看Scala示例,代码似乎更"熟悉"(我的背景是C和Java),但它似乎更多OO /程序性和功能性更低.Scala的一个巨大优势在于它为我提供了另一种与Java并排使用的语言工具,并且可能成为我当前专业箭袋中的另一个箭头,而不仅仅是一个学习练习.当我进一步深入Scala时,功能方面是否会变得更加突出,或者我最终只会编写具有某些功能影响的OO代码?换句话说,Haskell会比Scala更难和更快地挑战我的先入为主吗?



1> Brian..:

看看F#.CLR有一个.tail指令,因此您可以使用不会导致StackOverflow的尾调用来编写F#代码(例外,不是网站). 这是一个关于来自PDC的F#的介绍视频.



2> Matthias Ben..:

如果你真的想学习如何以功能的方式思考,那么Haskell绝对是正确的选择.几乎所有其他语言都让你很容易陷入命令式的风格.Haskell将迫使你进入一种功能性思维模式.我发现这在学习时不可或缺.(当然,你当然可能比我更有纪律,但为什么要推你的运气?)

如果您对从Haskell学到的东西感到满意(这将是很多!),那么您将开始评估更自由的功能语言,如Clojure或Scala.或者你可以留在Haskell,其库的情况实际上并不是那么糟糕.那时,这是一个环境和个人偏好的问题.但是,为了做出这样的选择,我认为,首先学习如何以"纯粹的"功能方式思考是至关重要的.



3> Andru Luvisi..:

我推荐PLT Scheme和SICP.语言非常简单,您可以非常快速地掌握重要概念.



4> Daniel Spiew..:

Scala不会像Haskell那样在任何地方弯曲你的思绪.学习FP时选择Scala而不是Haskell的主要原因是为了让自己更加温和地介绍monad,functor和高阶善良的危险野性.如果您来自面向对象的背景,试图将这些知识转化为功能性土地,Scala是非常棒的.如果你想直接潜入深水区,那就没那么好了.

根据你的要求,我会推荐GHC Haskell.没有什么能像你那样扭曲你的头脑.:-)尽管如此,我认为你应该继续关注Scala.该语言的许多方面都是独特的,特别是它的类型系统(结构+名义子类型==甜).它不会像Haskell那样伤害你的头脑,但它会让你深入了解一些你在其他地方找不到的概念,特别是所谓的"有类型编程"方法.

哦,为了回答问题的第二部分(Scala中的FP vs OO),我倾向于在面向对象的框架中以函数式编写代码.这有点难以描述,但就是这样.可以把它想象成从面向对象的角度设计API,但以功能样式实现所有内容.我保持不变的东西并花费大量时间使用更高阶的方法,但我在继承和传统的名义子类型的范围内完成所有这些.每隔一段时间,我仍会写一些必要的东西,但只有当它更干净时才能使用功能风格.



5> Hank Gay..:

还看看Clojure.



6> grettke..:

换句话说,Haskell会比Scala更难和更快地挑战我的先入为主吗?

是.

如果您真的想学习,请远离您的舒适区.

无论如何,你真的会在未来3个月内使用Scala生产代码吗?

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有