Haskell是一种通用编程语言,经过规范化并具有纯粹的实用编程功能。它由Lennart Augustsson、John Hughes、Paul Hudak、John Launchbury、Simon Peyton Jones、Philip Wadler 和 Erik Meijer开发和构建。其构成学科强、静态、结构化,没有严格的语义。它是根据第 3 条 BSD 许可证授权的。它的特点是懒惰、松散和模块化编程。一些方言已经存在了好几年,但只有主要的显式社区才知道它们,而其他方言则不知道体面的特征。其文件扩展名为 .hs 或 .lhs,支持跨平台框架。
Haskell 的特点:
- 纯函数: Haskell 中的函数是数学意义上的(即“纯”)。即使是有副作用的输入-输出操作也不过是由纯粹的代码提供的对要做什么的描述。没有指导方针,只有不能改变变量(局部或全局)或访问状态(如时间或随机数)的表达式。
- 惰性: Haskell 具有惰性求值的主要特性。它也被称为“按需调用”,这是一种策略,开发人员可以将表达式的评估推迟到需要或要求其值为止。它有助于避免重复评估授权共享,从而减少功能的执行时间。
- 包: Haskell 是开源的,在公共服务器上提供了广泛的包。例如,base、parsec 等。
- 静态类型:在 Haskell 中,每个表达式的类型都是在编译时确定的。由函数应用组合在一起的所有类型需要协调或匹配。如果它们不匹配,程序将被编译器关闭。
- 类型推断:类型类是 Haskell 中最令人印象深刻的特性,它允许表征泛型接口。它们是提供不同类型特征的典型列表的好主意。质量、测试和数字运算符利用 Type 类。
Scala代表可扩展语言,这意味着它旨在随着用户的需求而增长。 Scala 是一种通用的、高级的、多范式的编程语言,它支持函数式编程方法。它是一种纯面向对象的编程语言。它被设计成简短的并且有一个静态类型框架。 Scala 程序可以转换为字节码并可以在 JVM(Java虚拟机)上运行。它还提供了 Javascript 运行时。 Scala 编程具有许多函数式语言的特性,如 Scheme、Standard ML 和 Haskell、Lisp 等。
斯卡拉的特点:
- 函数式:它也是一种函数式编程语言,因为每个函数都是一个值,每个值都是一个对象。它提供了对高阶函数、嵌套函数、匿名函数等的支持。
- 类型推断:在 Scala 中,无需明确提及数据类型和函数返回类型,它会自动推断出数据的类型。的函数的返回类型由最后存在于函数表达式的类型来估计。
- 不变性: Scala 使用不变性思想,其中每个声明的变量理所当然地都是不可变的。不可变意味着您无法修改其值。不可变数据有助于管理需要管理数据的并发控制。此外,我们可以创建其值可以更改或更改的可变变量。
- 面向对象: Scala 中的每个值都是一个对象,因此它是一种纯面向对象的编程语言。对象的行为和类型由 Scala 中的类和特征描述。
- 在 JVM 上运行并可以执行Java代码: Java和 Scala 具有共同的运行时环境。因此用户可以轻松地从Java迁移到 Scala。 Scala 编译器将程序编译成 .class 文件,其中包含 JVM 可以执行的 Bytecode。
Haskell 与 Scala
Based on | HASKELL | SCALA |
---|---|---|
Definition | It is a general-purpose programming language which has pure programming features. | It is also a general-purpose programming language, which underpins functional programming. |
Compilation model | It has a compilation model as Glasgow Haskell Compilation (GHC) Model. | Compilation model in Scala is similar to that of C++ and Java. |
Syntax | The syntax in Haskell is easy with simple features and is string typing. | Scala has complicated syntax and complex features. |
Functional | Haskell has referential transparency its functions are pure standard first class functions. | Scala doesn’t ensure referential transparency and doesn’t have unadulterated features. |
Documentation | Haskell provides documentation with offline support and immediate search. | It provided in depth documentation encompassing of all the functional programming features. |
Feature | Haskell has standard features and parametric polymorphism. | Scala has immutability, concurrency control, type inference and so forth. |
Community | Haskell community has of large number of software developers. | Developers in the Scala community are less in comparison to Haskell. |