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を使うことが多いので、IntelliJのHaskell pluginを利用してみます。
IntelliJのsetting>plugin
またはMarketplaceからIntelliJ-Haskell
pluginをインストールして再起動します。
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
を選択します。
Project SDKで先程インストールしたstackのpathを設定します。
Windowsの場合デフォルトでは下記にインストールされます。
C:\Users\xxxx\AppData\Roaming\local\bin\stack.exe
https://docs.haskellstack.org/en/stable/install_and_upgrade/#path
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!"
無事実行できました。
おわり。