Haskellをインストールするには

「7つの言語 7つの世界」第8章の学習のために、Haskell(ハスケル)言語をインストールします。

7つの言語 7つの世界

  • Ruby
  • Io
  • Prolog
  • Scala
  • Erlang
  • Cloijure
  • Haskell

書籍では、GHC ( Glasgow Haskell Compiler ) 6.12.1を使っているよ。

Haskell公式サイト

公式サイトには、Minimal installers、Stack、Haskell Platform、いろいろあるけど、どれをダウンロードすればいいのかな?

書籍を学習するだけなら、ghcをインストールするだけでいいわよ。

Haskell Language
The Haskell purely functional programming language home page.

Windows 10

https://www.haskell.org/ghc/download_ghc_8_8_3.html#windows64 から、Windows 64-bit用の tar.gzファイルをダウンロードします。

7-Zipで解凍すると、ghc-8.8.3フォルダができます。

C:\ghc-8.8.3 に移動(またはコピペ)します。

Haskell学習フォルダの下にenv.batを作ります。筆者は、C:\Users\aoki.makoto\projects\personals\study_7lang\haskell\env.bat に作りました。

PATH=C:\ghc-8.8.3\bin;%PATH%Code language: DOS .bat (dos)

Haskell学習フォルダにcdして、env.batを実行します。

C:> cd projects\personals\study_7lang\haskell

C:> env.batCode language: plaintext (plaintext)

ghciでコンソールを起動します。:quit または :q でコンソールを終了します。

C:> ghci --version
The Glorious Glasgow Haskell Compilation System, version 8.8.3

C:> ghci
GHCi, version 8.8.3: https://www.haskell.org/ghc/  :? for help
Prelude>
Prelude> :quit
Leaving GHCi.

C:>Code language: plaintext (plaintext)

macOS(Mac OS X) 10.15.4

homebrewghcをインストールします。

$ brew install ghc
(省略)
==> Pouring ghc-8.10.1.catalina.bottle.tar.gz
==> /usr/local/Cellar/ghc/8.10.1/bin/ghc-pkg recache
🍺  /usr/local/Cellar/ghc/8.10.1: 6,886 files, 1.5GB

$Code language: Bash (bash)

コンソールは、ghci です。バージョンは 8.10.1 でした。

$ which ghci
/usr/local/bin/ghci

$ ghci --version
The Glorious Glasgow Haskell Compilation System, version 8.10.1
Code language: Bash (bash)

コンソールを起動します。:quit または :q でコンソールを終了します。

$ ghci
GHCi, version 8.10.1: https://www.haskell.org/ghc/  :? for help
Prelude> 
Prelude> :quit
Leaving GHCi.
Code language: Bash (bash)

Ubuntu 18.04

aptghcをインストールします。

$ sudo apt install ghcCode language: Bash (bash)

コンソールは、ghci です。バージョンは 8.0.2 でした。

$ which ghci
/usr/bin/ghci

$ ghci --version
The Glorious Glasgow Haskell Compilation System, version 8.0.2
Code language: Bash (bash)

コンソールを起動します。:quit または :q でコンソールを終了します。

$ ghci
GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
Prelude> 
Prelude> :quit
Leaving GHCi.
Code language: Bash (bash)

書籍内コードほか

Haskellのコメントは、単一行コメントは「-- 」に続けて書きます。複数行コメントは「{-」と「-}」で囲んで書きます。

-- これはコメントだよ

{- 
これもコメントだね
-}

{- これもコメントだよ -}
Code language: Haskell (haskell)

p235 code/haskell/double.hs:loadすると、エラーになりました。

module Main where
    double x = x + xCode language: Haskell (haskell)
Prelude> :load double.hs 
[1 of 1] Compiling Main             ( double.hs, interpreted )

double.hs:1:1: error:
    The IO action ‘main’ is not defined in module ‘Main’
Failed, moduleCode language: Haskell (haskell)

main :: IO () main = return ()の2行を追加することで、:load できました。

module Main where
    main :: IO ()
    main = return ()

    double x = x + xCode language: Haskell (haskell)
Prelude> :load double.hs 
[1 of 1] Compiling Main             ( double.hs, interpreted )
Ok, modules loaded: Main.
*Main> 
Code language: Haskell (haskell)

p243 リスト内包表記を検索していたら、Haskellには拡張構文として、並列内包表記があるそうです。

ghciを起動するとき、-XParallelListCompオプションを指定します。

$ ghci -XParallelListComp

Prelude> [(x,y) | x <- [1,2,3,4,5], y <- [3,4,5]]
[(1,3),(1,4),(1,5),(2,3),(2,4),(2,5),(3,3),(3,4),(3,5),(4,3),(4,4),(4,5),(5,3),(5,4),(5,5)]

Prelude> [(x,y) | x <- [1,2,3,4,5] | y <- [3,4,5]]
[(1,3),(2,4),(3,5)]
Code language: Haskell (haskell)

p248 foldl1

*Main> foldll (+) [1 .. 3]

<interactive>:29:1: error:
    • Variable not in scope:
        foldll :: (Integer -> Integer -> Integer) -> [Integer] -> t
    • Perhaps you meant one of these:
        ‘foldl’ (imported from Prelude), ‘foldl1’ (imported from Prelude),
        ‘foldr’ (imported from Prelude)
Code language: Haskell (haskell)

あれ、エラーになっちゃったよ

fold 小文字エル 小文字エル と入力してるわね
fold 小文字エル 数字の1 よ。

*Main> foldl1 (+) [1 .. 3]
6
Code language: Haskell (haskell)

セルフスタディ

セルフスタディ1日目と2日目はがんばったけど、

セルフスタディ3日目は難しかったようね

参考記事

ウォークスルー Haskell - Haskell 入門
Haskell 超入門 - Qiita
Haskellで簡単なプログラムを書くのに最低限必要な基礎文法を取り上げます。練習では再帰に慣れることに重点を置きます。再帰によるリスト処理の例として各種ソート(挿入ソート、バブルソート、マージソー…

おすすめ書籍

Grahaum Hutton (著) ラムダノート 2019

タイトルとURLをコピーしました