haskell环境配置要点(2020年7月)

  1. 环境 windows10 + wsl2 ubuntu 20.04 + vscode
  2. 安装stack 不要用apt-get
curl -sSL https://get.haskellstack.org/ | sh
  1. 配置国内源, 路径是 ~/.stack/config.yaml , 我使用的是清华源, 要用到这两个

hackage

stackage 很多论坛教程少了这个源, 会导致ghci下载体验极差

得到配置

package-indices:
  - download-prefix: http://mirrors.tuna.tsinghua.edu.cn/hackage/
    hackage-security:
        keyids:
        - 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d
        - 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42
        - 280b10153a522681163658cb49f632cde3f38d768b736ddbc901d99a1a772833
        - 2a96b1889dc221c17296fcc2bb34b908ca9734376f0f361660200935916ef201
        - 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3
        - 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921
        - 772e9f4c7db33d251d5c6e357199c819e569d130857dc225549b40845ff0890d
        - aa315286e6ad281ad61182235533c41e806e5a787e0b6d1e7eef3f09d137d2e9
        - fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0
        key-threshold: 3 # number of keys required

        # ignore expiration date, see https://github.com/commercialhaskell/stack/pull/4614
        ignore-expiry: no
setup-info-locations: ["http://mirrors.tuna.tsinghua.edu.cn/stackage/stack-setup.yaml"]
urls:
  latest-snapshot: http://mirrors.tuna.tsinghua.edu.cn/stackage/snapshots.json
  1. 按照 stack 官网 来
stack new my-project
cd my-project
stack setup
stack build
stack exec my-project-exe

过程中会安装ghci等, 如果遇到网络问题请重试几遍

vscode连接wsl部分这里不赘述, 安装插件Haskell Language Server, 发现需要用到hie

  1. 安装hie
    git地址
git clone https://github.com/haskell/haskell-ide-engine --recursive
cd haskell-ide-engine && ./install.hs hie

可能要编译很久, 遇到网络问题重试几遍

  1. 由于采用默认路径, 这里没怎么配置vscode, hie的很多问题可以通过先stack build后再用vscode打开项目目录(可以直接在项目目录下用 code . 命令打开vscode )解决
    //haskell
    "code-runner.executorMap": {
     
        "haskell": "cd $dir && stack runhaskell $fileName"
    },
    "code-runner.executorMapByFileExtension": {
     
        ".cabal": "stack exec $fileNameWithoutExt-exe"
    },
    "languageServerHaskell.useCustomHieWrapper": true,
    "languageServerHaskell.useCustomHieWrapperPath": "hie-wrapper",
  1. 可以愉快的写haskell了

刚刚开始学haskell, 欢迎交流

你可能感兴趣的:(haskell学习,haskell,linux)