🍣

2023年に Sublime Text で Haskell を書いていく

2023/07/26に公開

まえがき

うまくいかなかったのがなんとかうまくいったので共有します

なぜSublime Textを2023に使っているんですか

逆張りたいからです。

筆者の環境

  • openSUSE Leap 15.4
  • {Stack 2.9.3 + Cabal 3.6.2.0 + GHC(Any version) + HLS 2.0.0.1}
    • installed via ghcup

ことはじめ

わたしは Stack を ghcup でインストールしました

  • Stackのインストールは済んでいる前提で話を進めていきます

hsdevのインストール

$ mkdir hsdev
$ cd hsdev
$ stack unpack hsdev  
(たぶんhsdev-0.3.4.0が降ってきてunpackされます)

$ cd hsdev-0.3.4.0
$ stack init --force --resolver=lts-17.0
(リゾルバをlts-17.0としました)

$ stack install 

(this may take a while です(ほぼ確))
(lts-17.0なのでghc-8.10.3が降ってきてインストールがはじまります)
(その後依存パッケージのビルドが入り、hsdevのバイナリが出力されれば成功)
(弊環境では~/.local/bin/ に出力されました)

以下、stack install のログです

  • ghc-8.10.3 のインストール + (プリコンパイルドな依存ファイル) + hsdev-0.3.4.0 のインストールです
nick@x250suse~/w/h/hsdev-0.3.4.0> stack install
[ Error ] [GHCup-00130] The version 8.10.3 of the tool ghc is not installed.
[ Info  ] downloading: https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml as file /home/nick/.ghcup/cache/ghcup-0.0.7.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
[ Warn  ] New ghc version available. If you want to install this latest version, run 'ghcup install ghc 9.6.2'
[ Warn  ] New cabal version available. If you want to install this latest version, run 'ghcup install cabal 3.10.1.0'
[ Warn  ] New stack version available. If you want to install this latest version, run 'ghcup install stack 2.11.1'
[ Info  ] downloading: https://downloads.haskell.org/~ghc/8.10.3/ghc-8.10.3-x86_64-fedora27-linux.tar.xz as file /home/nick/.ghcup/tmp/ghcup-3796f009811ff553/ghc-8.10.3-x86_64-fedora27-linux.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  207M  100  207M    0     0  3375k      0  0:01:02  0:01:02 --:--:-- 2905k
[ Info  ] verifying digest of: ghc-8.10.3-x86_64-fedora27-linux.tar.xz
[ Info  ] Unpacking: ghc-8.10.3-x86_64-fedora27-linux.tar.xz to /home/nick/.ghcup/tmp/ghcup-1ee9e0f9138e3c78
[ Info  ] Installing GHC (this may take a while)
[ Info  ] Merging file tree from "/home/nick/.ghcup/tmp/ghcup-a4f2275a73e15fef/home/nick/.ghcup/ghc/8.10.3" to "/home/nick/.ghcup/ghc/8.10.3"
Trouble loading CompilerPaths cache: CompilerFileMetadataMismatch
aeson           > using precompiled package
---
(依存パッケージのビルド)
---
aml            > using precompiled package
hlint           > using precompiled package
hsdev           > configure (lib + exe)
hsdev           > Configuring hsdev-0.3.4.0...
hsdev           > build (lib + exe)
hsdev           > Preprocessing library for hsdev-0.3.4.0..
hsdev           > Building library for hsdev-0.3.4.0..
hsdev           > Preprocessing executable 'hsdev' for hsdev-0.3.4.0..
hsdev           > Building executable 'hsdev' for hsdev-0.3.4.0..
hsdev           > Linking .stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/hsdev/hsdev ...
hsdev           > copy/register
hsdev           > Installing library in /home/nick/workspace/hsdev/hsdev-0.3.4.0/.stack-work/install/x86_64-linux/e8ed48b2692d38910680b61d4f354be36523698463fc3df4f6335c3182324f2b/8.10.3/lib/x86_64-linux-ghc-8.10.3/hsdev-0.3.4.0-9toMDbjL8mFHA3jCBXeYZF
hsdev           > Installing executable hsdev in /home/nick/workspace/hsdev/hsdev-0.3.4.0/.stack-work/install/x86_64-linux/e8ed48b2692d38910680b61d4f354be36523698463fc3df4f6335c3182324f2b/8.10.3/bin
hsdev           > Registering library for hsdev-0.3.4.0..
Completed 12 action(s).
Copying from /home/nick/workspace/hsdev/hsdev-0.3.4.0/.stack-work/install/x86_64-linux/e8ed48b2692d38910680b61d4f354be36523698463fc3df4f6335c3182324f2b/8.10.3/bin/hsdev to /home/nick/.local/bin/hsdev

Copied executables to /home/nick/.local/bin:
- hsdev

SublimeHaskellのインストール

Package Control がインストールされている前提です。

  1. Sublime Text を起動する
  2. Ctrl + Shift + P を押下し、Package Control: Install Package を選択
  3. SublimeHaskell を選択し、Enterを押下

このままだとバージョン適合チェックで弾かれるので、~/.config/sublime-text-3/Packages/SublimeHaskell/hsdev/backend.pyHSDEV_MAX_VER[0, 3, 9, 0] とかにしてやります。

SublimeHaskellの設定

~/.config/sublime-text-3/Packages/User/SublimeHaskell.sublime-settings を編集します。

{
  "auto_completion_popup": true,

  // 実行ファイルへのパス
  "add_to_PATH": [
    "~/.local/bin/hsdev"
  ],

  // Additional ghc options for use in ghc-mod and ModuleInspector, for example "-package ghc"
  // ghcコマンドオプション一覧の参照 : http://www.kotha.net/ghcguide_ja/7.6.2/flag-reference.html
  "ghc_opts":
  [
    "-fno-warn-type-defaults",
    "-fno-warn-missing-signatures",
    "-fno-warn-incomplete-patterns",
    "-fwarn-unused-binds"
  ]
}

hsファイルを開いて、ツール → ビルドシステム → Haskell

  • 問題なくビルドできればOK!

Discussion