跳到主要内容

Haskell

纯函数式编程语言

官网

安装

注意

所有的安装步骤都需要配置代理,而且Haskell工具链的大小异常庞大

组件

  • 编译器
    • GHC(Glasgow Haskell Compiler):最流行的 Haskell 编译器
      • GHCi(Glasgow Haskell Compiler Interactive mode):REPL(Read-Eval-Print Loop)环境,交互式解释器
  • 包管理器
    • Cabal:Haskell 的包管理器
      • Stack:基于 Cabal 的包管理器,提供了更好的依赖管理和构建工具
  • 语言服务器
    • HLS(Haskell Language Server):Haskell 语言服务器,提供了 IDE 功能

自动安装

如果不想麻烦,就用GHCup一键安装所有工具链

顺便说说

Haskell学习曲线非常的陡峭
并且资料极其稀少
在普通的OOP(面向对象编程)语言中的很多概念可能都无法使用
并且还掺杂很多范畴论的概念

Haskell是严格类型的

本文参考了魔力Haskell
这本书非常全面

还有Haskell 2010 Language Report

前置概念

λ演算

Lambda Calculus

λ演算是Haskell的基石

视频介绍

其他

  • 结合:优先计算某个方向,比如右结合就是优先计算右边的表达式

你可能需要知道

Haskell语句的组成

不是声明就是表达式

此处,声明尽量和其他语言的声明区分开,尽量使用自然语言的“声明”去理解

声明就是事先规定好什么东西的语句,比如类型声明(类型签名)、类型类声明、绑定声明
表达式就是有值的式子、可以返回值的式子,比如函数、算术运算、甚至是单个的数字或者字符

所有值不可变

Haskell中所有值都是常量

所以,没 有 变 量

无顺序

Haskell语句没有顺序之分

命名规则

  • 强制规定
    • 必须以小写字母开头
      • 变量名、函数名
    • 必须以大写字母开头
      • 类型名和构造器
  • 非强制规定
    • x'一般代表稍加修改过的x

注释

Comments

-- 单行注释
{-
多行注释
-}

Hello World

main = putStrLn "Hello, World!"