📜  Haskell 和 Scala 的区别

📅  最后修改于: 2021-09-16 10:20:59             🧑  作者: Mango

Haskell是一种通用编程语言,经过规范化并具有纯粹的实用编程功能。它由Lennart Augustsson、John Hughes、Paul Hudak、John Launchbury、Simon Peyton Jones、Philip Wadler 和 Erik Meijer开发和构建其构成学科强、静态、结构化,没有严格的语义。它是根据第 3 条 BSD 许可证授权的。它的特点是懒惰、松散和模块化编程。一些方言已经存在了好几年,但只有主要的显式社区才知道它们,而其他方言则不知道体面的特征。其文件扩展名为 .hs 或 .lhs,支持跨平台框架。

Haskell 与 Scala

Haskell 的特点:

  1. 纯函数: Haskell 中的函数是数学意义上的(即“纯”)。即使是有副作用的输入-输出操作也不过是由纯粹的代码提供的对要做什么的描述。没有指导方针,只有不能改变变量(局部或全局)或访问状态(如时间或随机数)的表达式。
  2. 惰性: Haskell 具有惰性求值的主要特性。它也被称为“按需调用”,这是一种策略,开发人员可以将表达式的评估推迟到需要或要求其值为止。它有助于避免重复评估授权共享,从而减少功能的执行时间。
  3. 包: Haskell 是开源的,在公共服务器上提供了广泛的包。例如,base、parsec 等。
  4. 静态类型:在 Haskell 中,每个表达式的类型都是在编译时确定的。由函数应用组合在一起的所有类型需要协调或匹配。如果它们不匹配,程序将被编译器关闭。
  5. 类型推断:类型类是 Haskell 中最令人印象深刻的特性,它允许表征泛型接口。它们是提供不同类型特征的典型列表的好主意。质量、测试和数字运算符利用 Type 类。

Scala代表可扩展语言,这意味着它旨在随着用户的需求而增长。 Scala 是一种通用的、高级的、多范式的编程语言,它支持函数式编程方法。它是一种纯面向对象的编程语言。它被设计成简短的并且有一个静态类型框架。 Scala 程序可以转换为字节码并可以在 JVM(Java虚拟机)上运行。它还提供了 Javascript 运行时。 Scala 编程具有许多函数式语言的特性,如 Scheme、Standard ML 和 Haskell、Lisp 等。

斯卡拉的特点:

  1. 函数式:它也是一种函数式编程语言,因为每个函数都是一个值,每个值都是一个对象。它提供了对高阶函数、嵌套函数、匿名函数等的支持。
  2. 类型推断:在 Scala 中,无需明确提及数据类型和函数返回类型,它会自动推断出数据的类型。的函数的返回类型由最后存在于函数表达式的类型来估计。
  3. 不变性: Scala 使用不变性思想,其中每个声明的变量理所当然地都是不可变的。不可变意味着您无法修改其值。不可变数据有助于管理需要管理数据的并发控制。此外,我们可以创建其值可以更改或更改的可变变量。
  4. 面向对象: Scala 中的每个值都是一个对象,因此它是一种纯面向对象的编程语言。对象的行为和类型由 Scala 中的类和特征描述。
  5. 在 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.