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%

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

C:> cd projects\personals\study_7lang\haskell C:> env.bat

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:>

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 $

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

$ which ghci /usr/local/bin/ghci $ ghci --version The Glorious Glasgow Haskell Compilation System, version 8.10.1

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

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

Ubuntu 18.04

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

$ sudo apt install ghc

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

$ which ghci /usr/bin/ghci $ ghci --version The Glorious Glasgow Haskell Compilation System, version 8.0.2

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

$ ghci GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help Prelude> Prelude> :quit Leaving GHCi.

書籍内コードほか

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

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

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

module Main where double x = x + x
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, module

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

module Main where main :: IO () main = return () double x = x + x
Prelude> :load double.hs [1 of 1] Compiling Main ( double.hs, interpreted ) Ok, modules loaded: Main. *Main>

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)]

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)

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

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

*Main> foldl1 (+) [1 .. 3] 6

セルフスタディ

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

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

参考記事

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

おすすめ書籍

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

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