什么是Haskell实际上有用的?

例如,如果我开始学习Haskell,我可以找到自己使用它的原因。 我听说这种语言的一些常见用途是功能性的吗?


这种语言有哪些常见用途?

快速应用开发。

如果你想知道“为什么Haskell?”,那么你需要考虑函数式编程语言的优点(摘自http://c2.com/cgi/wiki?AdvantageOfFunctionalProgramming):

  • 功能性程序往往比其强制性语言同行更为简洁。 通常这会提高程序员的生产力

  • FP鼓励快速成型。 因此,我认为这是ExtremeProgrammers的最佳软件设计范例......但我知道什么?

  • FP在功能维度上是模块化的,其中ObjectOrientedProgramming在不同组件的维度上是模块化的。

  • 有蛋糕和吃它的能力。 想象一下,你有一个复杂的面向对象的系统处理消息 - 每个组件可能会根据消息进行状态更改,然后将消息转发给它所链接的某些对象。 如果调用层次中的某个对象决定该消息存在缺陷,那么如果能够轻松地回滚每一项更改,这不是太酷吗? 有不同国家的历史呢?

  • 许多家务管理任务为您完成:解构数据结构(PatternMatching),存储变量绑定(带闭包的LexicalScope),强类型(TypeInference),GarbageCollection,存储分配,是直接使用boxed(指向值)还是unboxed )表示...

  • 安全的多线程! 不可变的数据结构不受数据竞争条件的限制,因此不必受锁保护。 如果您始终分配新对象,而不是破坏性地操作现有对象,则锁定可以隐藏在分配和GarbageCollection系统中。

  • 除此之外,Haskell还有其自身的优势,例如:

  • 清晰直观的语法灵感来自数学符号。
  • 列出解析以基于现有列表创建列表。
  • Lambda表达式:创建函数而不给它们显式名称。 所以处理大公式更容易。
  • Haskell完全透明。 任何使用I / O的代码都必须标记为这样。 通过这种方式,它鼓励您将代码与副作用(例如,将文本放在屏幕上)分开,而不使用(计算)代码。
  • 懒惰评估是一个非常好的功能:
  • 即使有些事情通常会导致错误,只要您不使用结果,它仍然会工作。 例如,您可以将1 / 0作为列表的第一项,如果仅使用第二项,它仍然可以工作。
  • 编写诸如这个数独求解器之类的搜索程序比较容易,因为它不会一次加载所有的组合,它只是随着它而生成它们。 你可以在其他语言中做到这一点,但只有Haskell默认这样做。
  • 您可以查看以下链接:

  • http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming
  • http://blogs.msdn.com/wesdyer/archive/2007/01/18/why-functional-programming-is-important-in-a-mixed-environment.aspx
  • http://blog.kickino.org/archives/2007/05/22/T22_34_16/
  • http://useless-factor.blogspot.com/2007/05/advantage-of-functional-programming.html

  • 我认为这篇文章中的人对于从未使用过函数式编程语言的人来说是最重要的一点:扩展你的想法。 如果你对函数式编程还不熟悉,那么Haskell会以你从未想过的方式让你思考。 因此,您在其他领域和其他语言的编程将会改进。 多少? 很难量化。


    对于像Haskell这样的通用语言是否有好处,有一个很好的答案:一般编写程序。

    对于它在实践中的用途,我有三种方法来确定:

  • Haskell库和应用程序区域的标签云,由Hackage上的频率加权。
  • 表示它适用于图形,网络,系统编程,数据结构,数据库,开发,文本处理...

  • 它在工业中使用的领域 - 很多DSL,网络应用程序,编译器设计,网络,分析,系统编程......
  • 最后,我认为它真的很强大:

  • 正确性问题,特定于域的语言以及并行和并发编程
  • 我希望这给你一个关于你的问题有多广泛的意义,如果是以任何特殊性来回答。

    链接地址: http://www.djcxy.com/p/7423.html

    上一篇: What is Haskell actually useful for?

    下一篇: Use of Haskell state monad a code smell?