小编典典

Haskell 在现实世界中的用途是什么?

all

围绕 Haskell 有很多炒作,但是,很难获得有关它如何在现实世界应用程序中使用的信息。Haskell
最受欢迎的项目/用途是什么,为什么它擅长解决这些问题?


阅读 350

收藏
2022-03-11

共1个答案

小编典典

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

快速的应用程序开发。

如果您想知道“为什么选择
Haskell?”,那么您需要考虑函数式编程语言的优势(取自https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming):

  • 函数式程序往往比它们的 ImperativeLanguage 对应物更简洁。这通常会提高程序员的生产力

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

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

  • 拥有你的蛋糕并吃掉它的能力。想象一下,您有一个复杂的 OO 系统来处理消息 -
    每个组件都可能根据消息进行状态更改,然后将消息转发到它具有链接的某些对象。如果调用层次结构深处的某个对象确定消息有缺陷,那么能够轻松回滚每个更改不是太酷了吗?拥有不同州的历史怎么样?

  • 为您完成了许多内务管理任务:解构数据结构(PatternMatching)、存储变量绑定(带闭包的
    LexicalScope)、强类型(TypeInference)、GarbageCollection、存储分配、是否使用装箱(指向值)或未装箱(直接取值)
    ) 代表…

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

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

  • 受数学符号启发的清晰、直观的语法。
  • 列表推导基于现有列表创建列表。
  • Lambda 表达式:创建函数而不给它们明确的名称。所以处理大公式更容易。
  • Haskell 是完全引用透明的。任何使用 I/O 的代码都必须这样标记。这样,它鼓励您将具有副作用的代码(例如,将文本放在屏幕上)与没有(计算)的代码分开。
  • 延迟评估是一个非常好的功能:
    • 即使某些事情通常会导致错误,只要您不使用结果,它仍然可以工作。例如,您可以将1 / 0其作为列表的第一项,如果您只使用第二项,它仍然可以工作。
    • 编写像这个数独求解器这样的搜索程序更容易,因为它不会一次加载每个组合——它只是在运行时生成它们。你可以用其他语言做到这一点,但只有 Haskell 默认 做到这一点。
2022-03-11