HaskellをインストールしてHello Worldする

HaskellをインストールしてHello Worldしたメモです。

以前、すごいhaskellたのしく学ぼうふつうのHaskellプログラミングを写経して以来まったく触ってなかったので、
Windowsに新規にHaskell環境をインストールしてみます。
たしか以前はHaskell Platformを利用してまるっと一式インストールしたのですが、今はあまり推奨されていないようで
stackを利用してGHCをインストールするのがよいようです。

下記のバージョンでインストールしてみます。

  • stack 2.7.3
  • GHC 8.0.2

stack

下記からstackの最新のインストーラを利用してインストールします。
https://www.haskell.org/downloads/

stack-2.7.3-windows-x86_64-installer.exeが最新だったのでこれを使ってインストールしました。

バージョン確認

> stack --version
Version 2.7.3, Git revision 7927a3aec32e2b2e5e4fb5be76d0d50eddcc197f x86_64 hpack-0.34.4

GHC

setup するとGHCもインストールされるようなので、stack setupします。

> stack setup
Preparing to install GHC to an isolated location.
This will not interfere with any system-level installation.
Downloaded ghc-8.0.2.
Downloaded 7z.dll.
Downloaded 7z.exe.
Decompressing ghc-8.0.2.tar.xz...

7-Zip 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
            :
            :
            :
stack will use a sandboxed GHC it installed
For more information on paths, see 'stack path' and 'stack exec env'
To use this GHC and packages outside of a project, consider using:
stack ghc, stack ghci, stack runghc, or stack exec

バージョン確認

> stack ghc -- --version
The Glorious Glasgow Haskell Compilation System, version 8.0.2

IntelliJ plugin

普段IntelliJを使うことが多いので、IntelliJHaskell pluginを利用してみます。

IntelliJsetting>pluginまたはMarketplaceからIntelliJ-Haskellpluginをインストールして再起動します。
https://plugins.jetbrains.com/plugin/8258-intellij-haskell
https://github.com/rikvdkleij/intellij-haskell/blob/master/README.md

stack initで適当なディレクトリでプロジェクトを新規作成します。
stack.yamlというファイルと.stack-workというディレクトリが作成されました。

get_programming_with_haskell> stack init

get_programming_with_haskell> ls
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/01/30     21:39                .idea
d-----        2022/01/30     21:33                .stack-work
-a----        2022/01/30     21:13           2208 stack.yaml

File>New>Project from Existing Sources...IntelliJのプロジェクトを作成します。
Import project from external modelをチェックし、Haskell Stackを選択します。

f:id:pppurple:20220201014204p:plain:w600

Project SDKで先程インストールしたstackのpathを設定します。
Windowsの場合デフォルトでは下記にインストールされます。
C:\Users\xxxx\AppData\Roaming\local\bin\stack.exe
https://docs.haskellstack.org/en/stable/install_and_upgrade/#path
f:id:pppurple:20220201014243p:plain:w600

Hello World

Hello Worldしてみます。
下記のファイルを作成します。

1_2_hello.hs

main = do
  print "Hello World!"

GHCコンパイルします。
stackでインストールしているので、stack ghcで起動します。

get_programming_with_haskell> stack ghc .\1_2_hello.hs

.hi,.o,.exeファイルが作成されました。

get_programming_with_haskell> ls

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/01/31      2:25                .idea
d-----        2022/01/31     22:36                .stack-work
-a----        2022/01/31     22:36       10702770 1_2_hello.exe
-a----        2022/01/30     21:30            638 1_2_hello.hi
-a----        2022/01/31     22:36             35 1_2_hello.hs
-a----        2022/01/30     21:30           2584 1_2_hello.o
-a----        2022/01/31     22:36           2274 stack.yaml
-a----        2022/01/31     22:36            554 stack.yaml.lock

.exeを指定して実行してみます。
Hello World!が表示されました。

get_programming_with_haskell> .\1_2_hello.exe
"Hello World!"

GHCiで対話型で実行してみます。
stackでインストールしているので、stack ghciで起動します。

get_programming_with_haskell> stack ghci

:lでファイルをロードして、main関数を実行します。

Prelude> :l 1_2_hello.hs
[1 of 1] Compiling Main             ( 1_2_hello.hs, interpreted )
Ok, one module loaded.
*Main> main
"Hello World!"

無事実行できました。

おわり。

github.com