Haskell 是什么

Fanly 问答 2019-08-02 15:15:48 阅读(...)

Haskell是一种标准化的,通用的纯函数编程语言,有非限定性语义和强静态类型。Haskell语言的最重要的两个应用是GHC和Hugs。

Haskell 是一种标准化的,通用的纯函数编程语言,有非限定性语义和强静态类型。Haskell 语言的最重要的两个应用是 GHC(Glasgow Haskell Compiler)和 Hugs(一个 Haskell 语言的解释器)。

Haskell

Haskell 的命名源自美国逻辑学家哈斯凯尔·加里,他在数理逻辑方面上的工作使得函数式编程语言有了广泛的基础。在 Haskell 中,“函数是第一类对象”。作为一门函数编程语言,主要控制结构是函数。

Haskell 语言是 1990 年在编程语言 Miranda 的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么 Haskell 语言以希腊字母“λ”(Lambda)作为自己的标志。Haskell 具有“证明即程序、命题为类型”的特征。

Haskell 特性

Haskell 是现有的一门开放的、已发布标准的,且有多种实现的语言。支持惰性求值、模式匹配、列表解析、类型类和类型多态。它是一门纯函数编程语言,这意味着大体上,Haskell 中的函数没有副作用。Haskell 用特定的类型来表达副作用,该类型与函数类型相互独立。纯函数可以操作并返回可执行的副作用的类型,但不能够执行它们,只有用于表达副作用的类型才能执行这些副作用,Haskell 以此表达其它语言中的非纯函数。

Haskell 拥有一个基于 Hindley-Milner 类型推论的静态、强类型系统。Haskell 在此领域的主要创新就是加入了类型类(type class),原本设想作为重载的主要方式,在之后发现了更多用途。

Haskell 的主要实现 GHC 是个解释器,也是个原生代码编译器。它可以在大多数平台运行,GHC 在并发和并行上具有高性能的实现能力,也有丰富的类型系统,如广义代数数据类型和类型族(Type Families)。

单子是一个抽象类型,可以表达不同种类的计算,包括异常处理、非确定性、语法分析以及软件事务内存,其中一个应用是用于表达副作用的类型。单子定义为普通的数据类型,同时 Haskell 也为其提供了几种语法糖。

Haskell 有一个活跃的社区,在线上包仓库 Hackage 上有丰富的第三方开源库或工具。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • 网络抓包工具 Network packet capturing tool

    Fragroute是什么

    Fragroute是一个开源的数据包处理工具,可以实现的功能有拦截、修改和重写网络流量,Fragroute工具常用于执行大多数网络渗透测试以检查网络的安全性吗,目前主要适用平台有于Linux,BSD和Mac OS。
  • 网页优化 Web page optimization

    网页优化是什么

    网页优化是指针对网站的用户体验,来提高以及完善网站各方面功能作为基础的全面优化。网页优化是指通过改进网页的内容和代码结构来提高搜索引擎排名的过程。优化后的网页可以更容易被搜索引擎找到,从而提高网站的可见性和曝光率。
  • 共享托管 Shared hosting

    共享托管是什么

    共享托管是指多个网站共用一台服务器进行网站托管,这种方式通常是最为实惠的网站托管方式,因为多个网站共享服务器的资源,让服务提供商能够在成本上做出相应的调整。然而,由于多个网站共享同一台服务器,因此该服务器的性能可能受到其他网站的影响。
  • 网站托管 Website hosting

    网站托管是什么

    网站托管是指将网站的所有服务器、软件、网络等资源托付给专业的服务提供商,由其对网站进行管理和维护。通过网站托管,网站的所有者不需要拥有专业的技术知识和设备,也不需要花费大量的时间和金钱进行网站的维护,因此可以更专注于网站内容的开发和更新。
  • 排名 ranking

    淘宝号降权是什么意思

    淘宝号降权是指淘宝平台对于某些卖家账号进行的降低搜索排名和展示频率的处罚。这意味着被降权的账号的商品在淘宝搜索结果中排名会更低,展示频率也会变小,这会影响商品的销量和曝光率。
  • 腾讯 WeTest

    腾讯WeTest是什么

    WeTest是腾讯官方出品的一站式质量云,致力于产品质量标准建设和产品品质提升,依托10余年腾讯产品品质管理经验,历经千款腾讯产品磨砺。平台集成云手机、兼容测试、功能测试、性能测试、安全测试、自动化测试等优秀产品服务,满足众多开发者从研发到运营各阶段的测试需求。