Haskell周围有很多炒作,但是,很难获得有关在实际应用中如何使用它的信息。Haskell最受欢迎的项目/用法是什么?为什么它擅长解决这些问题?
Haskell周围有很多炒作,但是,很难获得有关在实际应用中如何使用它的信息。Haskell最受欢迎的项目/用法是什么?为什么它擅长解决这些问题?
Answers:
这种语言有哪些常见用途?
快速的应用程序开发。
如果您想知道“为什么要使用Haskell?”,那么您需要考虑函数式编程语言的优势(取自https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming):
功能程序往往比其ImperativeLanguage程序简洁得多。通常,这可以提高程序员的生产力
FP鼓励快速制作原型。因此,我认为这是ExtremeProgrammers的最佳软件设计范例...但是我知道什么?
FP在功能方面是模块化的,而ObjectOrientedProgramming在不同组件方面是模块化的。
拥有吃蛋糕的能力。假设您有一个复杂的面向对象的系统处理消息-每个组件都可能根据消息进行状态更改,然后将消息转发到它具有链接的某些对象。如果调用层次结构深处的某个对象确定消息有缺陷,那么能够轻松地回滚每个更改是否太酷了?有不同状态的历史怎么样?
为您完成许多整理工作:解构数据结构(PatternMatching),存储变量绑定(带闭包的LexicalScope),强类型(TypeInference),GarbageCollection,存储分配,是否使用盒装(指向值的指针)或未盒装(直接值) )表示...
安全的多线程!不变的数据结构不受数据争用条件的影响,因此不必受锁保护。如果您总是分配新对象,而不是破坏性地操作现有对象,则可以在分配和GarbageCollection系统中隐藏锁定。
除此以外,Haskell还具有以下优点:
1 / 0
作为列表的第一项,如果仅使用第二项,它将仍然有效。您可以查看以下链接:
x = 5;
保证执行后x
包含值5
。
operator =
被调用。如果没有定义operator =
我认为,对于从未使用过函数式编程语言的任何人,这篇文章中的人们都没有抓住最重要的要点:扩展您的思维。如果您不熟悉函数式编程,那么Haskell将使您以前所未有的方式思考。结果,您在其他领域和其他语言中的编程将得到改善。多少?难以量化。
对于像Haskell这样的通用语言有什么好处,有一个很好的答案:编写程序。
对于它在实践中的用途,我采用三种方法来确定:
表示它适用于图形,网络,系统编程,数据结构,数据库,开发,文本处理...
最后,我对它的真正优势有以下看法:
我希望这能使您对您的问题有一个广泛的了解,如果它能以任何具体的方式回答。
我有一个很棒的网站,facebook创建了一个用于重写PHP代码的自动化工具。他们将源解析为抽象语法树,进行一些转换:
if ($f == false) -> if (false == $f)
我不知道为什么,但这似乎是他们的特殊风格,然后他们很漂亮地打印出来。
https://github.com/facebook/lex-pass
我们使用haskell来制作小型领域特定的语言。大量的数据处理。Web开发。网络蜘蛛。测试应用程序。编写系统管理脚本。后端脚本,可与其他方通信。监视脚本(我们有一个与munin一起很好地工作的DSL,可以更轻松地为您的应用程序编写正确的监视代码。)
实际上是各种各样的东西。如果您在数学上有些偏爱,它只是一种日常通用语言,具有一些非常强大和有用的功能。
false
在左侧写代码的好处,但我看不到使用工具自动执行此操作的意义:如果您已经有一个==
操作员,那么您已经知道您没有那部分错误lex-pass的目的是赶上,如果您没有lex-pass,则=
无法肯定地说出是否是这样。