围绕 Haskell 有很多炒作,但是,很难获得有关它如何在现实世界应用程序中使用的信息。Haskell 最受欢迎的项目/用途是什么,为什么它擅长解决这些问题?
这种语言有哪些常见用途?
快速的应用程序开发。
如果您想知道“为什么选择 Haskell?”,那么您需要考虑函数式编程语言的优势(取自https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming):
函数式程序往往比它们的 ImperativeLanguage 对应物更简洁。这通常会提高程序员的生产力 FP 鼓励快速原型设计。因此,我认为它是 ExtremeProgrammers 的最佳软件设计范例……但我知道什么? FP在功能维度上是模块化的,而ObjectOrientedProgramming在不同组件维度上是模块化的。 拥有你的蛋糕并吃掉它的能力。想象一下,您有一个复杂的 OO 系统来处理消息 - 每个组件都可能根据消息进行状态更改,然后将消息转发到它具有链接的某些对象。如果调用层次结构深处的某个对象确定消息有缺陷,那么能够轻松回滚每个更改不是太酷了吗?拥有不同州的历史怎么样? 为您完成了许多内务管理任务:解构数据结构(PatternMatching)、存储变量绑定(带闭包的 LexicalScope)、强类型(TypeInference)、GarbageCollection、存储分配、是否使用装箱(指向值)或未装箱(直接取值) ) 代表… 安全的多线程!不可变数据结构不受数据竞争条件的影响,因此不必受锁保护。如果您总是分配新对象,而不是破坏性地操作现有对象,则锁定可以隐藏在分配和 GarbageCollection 系统中。
函数式程序往往比它们的 ImperativeLanguage 对应物更简洁。这通常会提高程序员的生产力
FP 鼓励快速原型设计。因此,我认为它是 ExtremeProgrammers 的最佳软件设计范例……但我知道什么?
FP在功能维度上是模块化的,而ObjectOrientedProgramming在不同组件维度上是模块化的。
拥有你的蛋糕并吃掉它的能力。想象一下,您有一个复杂的 OO 系统来处理消息 - 每个组件都可能根据消息进行状态更改,然后将消息转发到它具有链接的某些对象。如果调用层次结构深处的某个对象确定消息有缺陷,那么能够轻松回滚每个更改不是太酷了吗?拥有不同州的历史怎么样?
为您完成了许多内务管理任务:解构数据结构(PatternMatching)、存储变量绑定(带闭包的 LexicalScope)、强类型(TypeInference)、GarbageCollection、存储分配、是否使用装箱(指向值)或未装箱(直接取值) ) 代表…
安全的多线程!不可变数据结构不受数据竞争条件的影响,因此不必受锁保护。如果您总是分配新对象,而不是破坏性地操作现有对象,则锁定可以隐藏在分配和 GarbageCollection 系统中。
除此之外,Haskell 有其自身的优势,例如:
1 / 0