唠唠闲话

去年学纽结理论,看到一段用 Mathematica 求不变量的代码后,开始入坑函数式编程。
函数式编程,这种抽象的编程方法更符合基础数学学生的思考逻辑,也更适合用于做抽象的数学推导。顺着函数式编程,又了解到语言更抽象的 Haskell,据说现在的编程语言都多少受 Haskell 的一些思想影响。

Haskell 简述

Haskell 的命名源自美国逻辑学家 Haskell Brooks Curry,其在数学逻辑方面的工作使得函数式编程语言有了广泛的基础。
Haskell 优点

  • 使用纯函数式语言更加符合数学和逻辑的表达形式
  • 使用纯函数式编程有利于编程技术在思想层面的精益求精
  • 打破习惯上使用ALGO系的编程语言(C/C++等)形成了一些固有的思维习惯
  • 有助于学习数学本身,特别是抽象的纯数学

B站搜范畴论,还可以找到这个视频面向程序员的范畴论,教学用的软件就是 Haskell 。

相关阅读
CSDN:浅谈 Haskell
知乎:学过Haskell是一种怎样的体验
知乎:有必要学 Haskell 吗
知乎:Haskell 劝退
简书:为什么要学习Haskell语言
博客:为什么业界很少使用 Haskell


安装及使用

软件官网:haskell
视频教程(Windows):油管

Ubuntu

  1. 打开 shell,输入如下命令行,根据提示和自己需要操作:添加 bash 路径;安装 haskell-language-server (HLS);安装 stack。
1
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
  1. 显示内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Welcome to Haskell!

This script will download and install the following binaries:
* ghcup - The Haskell toolchain installer
* ghc - The Glasgow Haskell Compiler
* cabal - The Cabal build tool for managing Haskell software
* stack - (optional) A cross-platform program for developing Haskell projects
* hls - (optional) A language server for developers to integrate with their editor/IDE

ghcup installs only into the following directory,
which can be removed anytime:
/home/rex/.ghcup

Press ENTER to proceed or ctrl-c to abort.
Note that this script can be re-run at any given time.

注:下载和安装需要等待较长时间。
注2:bash 路径设置后,打开终端如果提示 不是有效的标识符,是文件 ~/.bashrc 最后一行 export 的语法错了,删掉后半截完事。

  1. 安装 GHC
1
sudo apt install ghc

Windows

安装 Chocolatey

  1. 软件简介

Chocolatey 是 Windows 下的包安装管理器,类似 Linuux 下的 apt-getyum官方链接

  1. 在 Windows 中搜索 PowerShell 并用管理员权限打开,输入代码
1
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

注: 终端会显示报错信息,忽略不管

安装 Haskell 和 GHC

  1. 管理员权限打开 PowerShell,输入代码,提示内容均输入 y

    1
    choco install haskell-dev

    注:GHC 是 Haskell 的编译器。

  2. 安装完成,显示内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Chocolatey installed 5/5 packages.
    See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

    Installed:
    - ghc v9.0.1
    - chocolatey-core.extension v1.3.5.1
    - haskell-dev v0.0.1
    - msys2 v20210604.0.0
    - cabal v3.4.0.0
  3. 测试安装
    新建文件 haskell.hs, 内容如下

    1
    2
    main :: IO()
    main = putStrLn "Hello World!"

    打开命令行,进入文件所在目录,执行

    1
    ghc haskell.hs

VsCode 扩展

打开 vscode,搜索安装扩展 haskellcode runner

软件使用

  1. 安装扩展后,右上角会出现运行按钮,在 vscode 上编辑 haskell 文件时,点击按钮就会编译运行。
  2. 一般地,ubuntu 使用 shell,Windows 使用 PowerShell ,输入命令 ghc 文件名.hs 编译文件。

注:Windows 端 code runner 扩展好像用不了,Ubuntu 一切正常。