📌

Haskellのインストールを試す

2023/01/09に公開

📅2023-01-09 mon (成人の日) 21:30

わたしは、プログラム言語のHaskell(ハスケル)への知見はない。
ググりながら試す。

🔍 ハスケル インストール

📖Haskell のインストール(Windows 上)

グーグル検索上位のサイトを読むと、📖Haskell.org がハスケルの公式サイトかもしれない。
ひとまず検索で見つけたサイトではなく、公式サイトのトップページからインストーラーを探してみる。
すると 👇別のページに着いた

📖GHCup

なんだか分からないが Power Shell のコマンドが置いてあった。
そこで Visual Studio Code の Terminal を開き Power Shell を選ぶ。

PS C:\Users\むずでょ\Documents\GitHub\haskell-practice> Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }
Picked C:\ as default Install prefix!
Welcome to Haskell!

This script can download and install the following programs:
  * ghcup - The Haskell toolchain installer
  * ghc   - The Glasgow Haskell Compiler
  * msys2 - A linux-style toolchain environment required for many operations
  * 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

Please note that ANTIVIRUS may interfere with the installation. If you experience problems, consider
disabling it temporarily.

Where to install to (this should be a short Path, preferably a Drive like 'C:\')?
If you accept this path, binaries will be installed into 'C:\ghcup\bin' and msys2 into 'C:\ghcup\msys64'.
Press enter to accept the default [C:\]:

ん?

Dockerコンテナの中へインストールする方がいいか?
しかし めんどくさいので このままインストールすることにする
Enter キーを打鍵する

Setting env variable GHCUP_INSTALL_BASE_PREFIX to 'C:\'
Preparing for GHCup installation...
Specify Cabal directory (this is where haskell packages end up)
Press enter to accept the default [C:\\cabal]:

Cabal が何だかわからないが Enter キーを打鍵する

Install HLS
Do you want to install the haskell-language-server (HLS) for development purposes as well?
[Y] Yes  [N] No  [A] Abort  [?] ヘルプ (既定値は "N"):

HLS も何だかわからないが Y キーを打鍵する

Install stack
Do you want to install stack as well?
[Y] Yes  [N] No  [A] Abort  [?] ヘルプ (既定値は "N"): 

stack も何だかわからないが Y キーを打鍵する

First checking for Msys2...

Install MSys2
Do you want GHCup to install a default MSys2 toolchain (recommended)?
[Y] Yes  [N] No  [?] ヘルプ (既定値は "Y"):

MSys2 も何だかわからないが Y キーを打鍵する

...Msys2 doesn't exist, installing into C:\\ghcup\msys64    
Starting installation in 5 seconds, this may take a while...
Downloading Msys2 archive 20221216...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 57.0M  100 57.0M    0     0  1125k      0  0:00:51  0:00:51 --:--:-- 1676k
Extracting Msys2 archive...
Processing MSYS2 bash for first time use...
Copying skeleton files.
These files are for the users to personalise their msys2 experience.

They will never be overwritten nor automatically updated.

'./.bashrc' -> '/home/むずでょ/.bashrc'
'./.bash_logout' -> '/home/むずでょ/.bash_logout'
'./.bash_profile' -> '/home/むずでょ/.bash_profile'
'./.inputrc' -> '/home/むずでょ/.inputrc'
'./.profile' -> '/home/むずでょ/.profile'
'C:\WINDOWS\system32\drivers\etc\hosts' -> '/etc/hosts'
'C:\WINDOWS\system32\drivers\etc\protocol' -> '/etc/protocols'
'C:\WINDOWS\system32\drivers\etc\services' -> '/etc/services'
'C:\WINDOWS\system32\drivers\etc\networks' -> '/etc/networks'
gpg: /etc/pacman.d/gnupg/trustdb.gpg: trustdb created
gpg: no ultimately trusted keys found
gpg: starting migration from earlier GnuPG versions
gpg: porting secret keys from '/etc/pacman.d/gnupg/secring.gpg' to gpg-agent
gpg: migration succeeded
==> Generating pacman master key. This may take some time.
gpg: Generating pacman keyring master key...
gpg: directory '/etc/pacman.d/gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/etc/pacman.d/gnupg/openpgp-revocs.d/56BAC218994D73470A2B5575C98DC0A1F938A74D.rev'
gpg: Done
==> Updating trust database...
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
==> Appending keys from msys2.gpg...
==> Locally signing trusted keys in keyring...
  -> Locally signed 5 keys.
==> Importing owner trust values...
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
==> Disabling revoked keys in keyring...
  -> Disabled 4 keys.
==> Updating trust database...
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   5  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   5  signed:   7  trust: 0-, 0q, 0n, 5m, 0f, 0u
gpg: depth: 2  valid:   4  signed:   2  trust: 4-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2023-04-22
gpg: error retrieving 'alexey.pawlow@gmail.com' via WKD: No data
gpg: error reading key: No data
gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
gpg: key F40D263ECA25678A: "Alexey Pavlov (Alexpux) <alexey.pawlow@gmail.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg: error retrieving 'david.macek.0@gmail.com' via WKD: No data
gpg: error reading key: No data
gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
gpg: key 790AE56A1D3CFDDC: "David Macek (MSYS2 master key) <david.macek.0@gmail.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg: error retrieving 'martellmalone@gmail.com' via WKD: No data
gpg: error reading key: No data
gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
gpg: key DA7EF2ABAEEA755C: "Martell Malone (martell) <martellmalone@gmail.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg: error retrieving 'reiter.christoph@gmail.com' via WKD: No data
gpg: error reading key: No data
gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
gpg: key 755B8182ACD22879: "Christoph Reiter (MSYS2 master key) <reiter.christoph@gmail.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg: error retrieving 'icquinteiro@gmail.com' via WKD: No data
gpg: error reading key: No data
gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
gpg: key 9F418C233E652008: "Ignacio Casal Quinteiro <icquinteiro@gmail.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg: error retrieving 'mingw.android@gmail.com' via WKD: No data
gpg: error reading key: No data

情報: 指定された条件のタスクは実行されていません。
Upgrading full system...
:: Synchronizing package databases...
 mingw32                                                                                              1731.8 KiB   846 KiB/s 00:02 [##############################################################################] 100%
 mingw64                                                                                              1784.1 KiB   534 KiB/s 00:03 [##############################################################################] 100%
 ucrt64                                                                                               1829.4 KiB   692 KiB/s 00:03 [##############################################################################] 100%
 clang32                                                                                              1713.1 KiB   768 KiB/s 00:02 [##############################################################################] 100%
 clang64                                                                                              1773.3 KiB   677 KiB/s 00:03 [##############################################################################] 100%
 msys                                                                                                  417.7 KiB   988 KiB/s 00:00 [##############################################################################] 100%
:: Starting core system upgrade...
warning: terminate other MSYS2 programs before proceeding
resolving dependencies...
looking for conflicting packages...

Packages (3) mintty-1~3.6.3-1  msys2-runtime-3.4.3-4  pacman-6.0.1-28

Total Download Size:    9.16 MiB
Total Installed Size:  44.89 MiB
Net Upgrade Size:      -1.63 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 mintty-1~3.6.3-1-x86_64                                                                               811.2 KiB   708 KiB/s 00:01 [##############################################################################] 100%
 pacman-6.0.1-28-x86_64                                                                                  5.9 MiB  4.73 MiB/s 00:01 [##############################################################################] 100%
 msys2-runtime-3.4.3-4-x86_64                                                                            2.4 MiB   885 KiB/s 00:03 [##############################################################################] 100%
 Total (3/3)                                                                                             9.2 MiB  2.81 MiB/s 00:03 [##############################################################################] 100%
(3/3) checking keys in keyring                                                                                                     [##############################################################################] 100%
(3/3) checking package integrity                                                                                                   [##############################################################################] 100%
(3/3) loading package files                                                                                                        [##############################################################################] 100%
(3/3) checking for file conflicts                                                                                                  [##############################################################################] 100%
(3/3) checking available disk space                                                                                                [##############################################################################] 100%
:: Processing package changes...
(1/3) upgrading mintty                                                                                                             [##############################################################################] 100%
(2/3) upgrading msys2-runtime                                                                                                      [##############################################################################] 100%
(3/3) upgrading pacman                                                                                                             [##############################################################################] 100%
:: To complete this update all MSYS2 processes including this terminal will be closed. Confirm to proceed [Y/n] 
Upgrading full system twice...
:: Synchronizing package databases...
 clangarm64                                                                                           1040.3 KiB   514 KiB/s 00:02 [##############################################################################] 100%
 mingw32 is up to date
 mingw64 is up to date
 ucrt64 is up to date
 clang32 is up to date
 clang64 is up to date
 msys is up to date
:: Starting core system upgrade...
 there is nothing to do
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (16) brotli-1.0.9-5  bsdtar-3.6.2-3  curl-7.87.0-2  gawk-5.2.1-2  heimdal-libs-7.8.0-3  libcurl-7.87.0-2  libksba-1.6.3-1  liblzma-5.4.0-1  libopenssl-3.0.7-2  libpcre2_8-10.42-1  libpsl-0.21.2-1
              libsqlite-3.40.1-1  libssh2-1.10.0-3  nano-7.1-1  openssl-3.0.7-2  xz-5.4.0-1

Total Download Size:    8.17 MiB
Total Installed Size:  23.20 MiB
Net Upgrade Size:       1.79 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 openssl-3.0.7-2-x86_64                                                                                661.0 KiB   982 KiB/s 00:01 [##############################################################################] 100%
 gawk-5.2.1-2-x86_64                                                                                  1224.1 KiB  1751 KiB/s 00:01 [##############################################################################] 100% 
 curl-7.87.0-2-x86_64                                                                                  916.2 KiB  1124 KiB/s 00:01 [##############################################################################] 100% 
 heimdal-libs-7.8.0-3-x86_64                                                                           832.6 KiB   981 KiB/s 00:01 [##############################################################################] 100% 
 libopenssl-3.0.7-2-x86_64                                                                            1603.9 KiB  1615 KiB/s 00:01 [##############################################################################] 100% 
 libsqlite-3.40.1-1-x86_64                                                                             658.7 KiB  1572 KiB/s 00:00 [##############################################################################] 100%
 bsdtar-3.6.2-3-x86_64                                                                                 323.6 KiB   741 KiB/s 00:00 [##############################################################################] 100%
 nano-7.1-1-x86_64                                                                                     640.8 KiB   848 KiB/s 00:01 [##############################################################################] 100% 
 brotli-1.0.9-5-x86_64                                                                                 339.4 KiB   375 KiB/s 00:01 [##############################################################################] 100% 
 libcurl-7.87.0-2-x86_64                                                                               253.2 KiB   630 KiB/s 00:00 [##############################################################################] 100% 
 xz-5.4.0-1-x86_64                                                                                     319.0 KiB   624 KiB/s 00:01 [##############################################################################] 100% 
 libksba-1.6.3-1-x86_64                                                                                125.6 KiB   368 KiB/s 00:00 [##############################################################################] 100% 
 libssh2-1.10.0-3-x86_64                                                                               192.5 KiB   290 KiB/s 00:01 [##############################################################################] 100% 
 libpcre2_8-10.42-1-x86_64                                                                             125.0 KiB   355 KiB/s 00:00 [##############################################################################] 100% 
 liblzma-5.4.0-1-x86_64                                                                                 85.3 KiB   244 KiB/s 00:00 [##############################################################################] 100% 
 libpsl-0.21.2-1-x86_64                                                                                 69.4 KiB   216 KiB/s 00:00 [##############################################################################] 100% 
 Total (16/16)                                                                                           8.2 MiB  3.49 MiB/s 00:02 [##############################################################################] 100% 
(16/16) checking keys in keyring                                                                                                   [##############################################################################] 100%
(16/16) checking package integrity                                                                                                 [##############################################################################] 100% 
(16/16) loading package files                                                                                                      [##############################################################################] 100% 
(16/16) checking for file conflicts                                                                                                [##############################################################################] 100% 
(16/16) checking available disk space                                                                                              [##############################################################################] 100% 
:: Processing package changes...
( 1/16) upgrading brotli                                                                                                           [##############################################################################] 100% 
( 2/16) upgrading liblzma                                                                                                          [##############################################################################] 100%
( 3/16) upgrading libopenssl                                                                                                       [##############################################################################] 100%
( 4/16) upgrading bsdtar                                                                                                           [##############################################################################] 100%
( 5/16) upgrading libsqlite                                                                                                        [##############################################################################] 100%
( 6/16) upgrading heimdal-libs                                                                                                     [##############################################################################] 100%
( 7/16) upgrading libpsl                                                                                                           [##############################################################################] 100%
( 8/16) upgrading openssl                                                                                                          [##############################################################################] 100%
( 9/16) upgrading libpcre2_8                                                                                                       [##############################################################################] 100%
(10/16) upgrading libssh2                                                                                                          [##############################################################################] 100%
(11/16) upgrading libcurl                                                                                                          [##############################################################################] 100%
(12/16) upgrading curl                                                                                                             [##############################################################################] 100%
(13/16) upgrading gawk                                                                                                             [##############################################################################] 100%
(14/16) upgrading libksba                                                                                                          [##############################################################################] 100%
(15/16) upgrading nano                                                                                                             [##############################################################################] 100%
(16/16) upgrading xz                                                                                                               [##############################################################################] 100%
:: Running post-transaction hooks...
(1/1) Updating the info directory file...
Installing Dependencies...
warning: curl-7.87.0-2 is up to date -- skipping
resolving dependencies...
looking for conflicting packages...

Packages (7) autoconf2.13-2.13-5  autoconf2.69-2.69-2  autoconf2.71-2.71-1  diffutils-3.8-4  m4-1.4.19-2  autoconf-wrapper-15-1  mingw-w64-x86_64-pkgconf-1~1.8.0-2

Total Download Size:   1.40 MiB
Total Installed Size:  6.54 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 autoconf2.13-2.13-5-any                                                                               136.3 KiB  84.3 KiB/s 00:02 [##############################################################################] 100%
 autoconf2.71-2.71-1-any                                                                               326.6 KiB   198 KiB/s 00:02 [##############################################################################] 100% 
 autoconf2.69-2.69-2-any                                                                               284.0 KiB   171 KiB/s 00:02 [##############################################################################] 100% 
 m4-1.4.19-2-x86_64                                                                                    238.1 KiB   143 KiB/s 00:02 [##############################################################################] 100% 
 diffutils-3.8-4-x86_64                                                                                363.9 KiB   185 KiB/s 00:02 [##############################################################################] 100% 
 mingw-w64-x86_64-pkgconf-1~1.8.0-2-any                                                                 79.1 KiB   235 KiB/s 00:00 [##############################################################################] 100% 
 autoconf-wrapper-15-1-any                                                                               4.7 KiB  12.4 KiB/s 00:00 [##############################################################################] 100% 
 Total (7/7)                                                                                          1432.6 KiB   670 KiB/s 00:02 [##############################################################################] 100% 
(7/7) checking keys in keyring                                                                                                     [##############################################################################] 100%
(7/7) checking package integrity                                                                                                   [##############################################################################] 100% 
(7/7) loading package files                                                                                                        [##############################################################################] 100% 
(7/7) checking for file conflicts                                                                                                  [##############################################################################] 100% 
(7/7) checking available disk space                                                                                                [##############################################################################] 100%
:: Processing package changes...
(1/7) installing m4                                                                                                                [##############################################################################] 100% 
(2/7) installing diffutils                                                                                                         [##############################################################################] 100%
(3/7) installing autoconf2.71                                                                                                      [##############################################################################] 100% 
(4/7) installing autoconf2.69                                                                                                      [##############################################################################] 100%
(5/7) installing autoconf2.13                                                                                                      [##############################################################################] 100%
(6/7) installing autoconf-wrapper                                                                                                  [##############################################################################] 100% 
(7/7) installing mingw-w64-x86_64-pkgconf                                                                                          [##############################################################################] 100%
:: Running post-transaction hooks...
(1/1) Updating the info directory file...
Updating SSL root certificate authorities...
warning: ca-certificates-20211016-2 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...

Packages (1) ca-certificates-20211016-2

Total Download Size:   0.32 MiB
Total Installed Size:  0.86 MiB
Net Upgrade Size:      0.00 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 ca-certificates-20211016-2-any                                                                        324.8 KiB   200 KiB/s 00:02 [##############################################################################] 100%
(1/1) checking keys in keyring                                                                                                     [##############################################################################] 100%
(1/1) checking package integrity                                                                                                   [##############################################################################] 100% 
(1/1) loading package files                                                                                                        [##############################################################################] 100% 
(1/1) checking for file conflicts                                                                                                  [##############################################################################] 100% 
(1/1) checking available disk space                                                                                                [##############################################################################] 100% 
:: Processing package changes...
(1/1) reinstalling ca-certificates                                                                                                 [##############################################################################] 100%
Setting default home directory...
Creating shortcuts...
Adding C:\\ghcup\bin to Users Path...
Setting CABAL_DIR to 'C:\cabal'
Starting GHCup installer...
PS C:\Users\むずでょ\Documents\GitHub\haskell-practice> 

放置したら終わってたがエラーが出てないか?
とりあえず先に進む

📖First steps

C:\Users\むずでょ\Documents\GitHub\haskell-practice>ghc --version
ghc : 用語 'ghc' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから
、再試行してください。
発生場所 行:1 文字:1
+ ghc --version
+ ~~~
    + CategoryInfo          : ObjectNotFound: (ghc:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

じゃあ Visual Studio Code を一旦閉じて 開き直す

C:\Users\むずでょ\Documents\GitHub\haskell-practice>ghc --version
The Glorious Glasgow Haskell Compilation System, version 9.2.5

C:\Users\むずでょ\Documents\GitHub\haskell-practice>

インストールはできたのだと思う。

ところで、 MinGW x64 というコマンドプロンプト・ウィンドウが開いていることに気づいた

To do so, you may want to run 'source /c/ghcup/env' in your current terminal
session as well as your shell configuration (e.g. ~/.bashrc).

===============================================================================

All done!

In a new powershell or cmd.exe session, now you can...

Start a simple repl via:
  ghci

Start a new haskell project in the current directory via:
  cabal init --interactive

Install other GHC versions and tools via:
  ghcup list
  ghcup install <tool> <version>

To install system libraries and update msys2/mingw64,
open the "Mingw haskell shell"
and the "Mingw package management docs"
desktop shortcuts.

If you are new to Haskell, check out https://www.haskell.org/ghcup/steps/
Press any key to exit

Enter キーを打鍵すると消えた

📅2023-01-09 mon (成人の日) 22:27

Discussion