26
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MacでのHaskell環境の構築

Last updated at Posted at 2015-06-24

Haskell環境構築

Haskellの勉強をしてみようと思い、とりあえず環境構築についてまとめてみました。

基本的に技術評論社の[関数プログラミング実践入門](関数プログラミング実践入門 ──簡潔で、正しいコードを書くために (WEB+DB PRESS plus)
)に書かれている通りに進めました。

ちなみに関数プログラミングとか一切わからない状態で進めているので、言語解説的な内容は含みません。

Haskell Platform

Haskell Platformを使うのが一般的らしいです。

GHC(The Glasgow Haskell Compiler)を中心に標準的なライブラリが同梱されているとのことです。GHCはMacはもちろんWindows, Unixでも動作するそうです。

スクリーンショット 2015-06-24 23.57.01.png

自分のプラットフォームに応じたパッケージをダウンロードします。

スクリーンショット 2015-06-24 23.57.11.png

Macの場合はこんな感じのページ。

スクリーンショット 2015-06-24 23.59.12.png

インストーラを使ってインストールすれば終わりです。

使ってみる

インストールするとインタープリタGHCiが使えるようになります。ghciと入力するとインタープリタが起動します。

$ ghci
GHCi, version 7.8.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> 

:?でヘルプが表示されます。

Prelude> :?

お決まりのHello World出力。

Prelude> "Hello World"
"Hello World"

標準ライブラリから簡単なものを

標準ライブラリがまとまっていたので、ちょっと触ってみます。

文字列は"++"で結合するみたいです。

Prelude> "Hello"++" "++"Haskell"
"Hello Haskell"

関数の呼び出しは関数名のあとに半角スペース入れるみたいです。括弧とかはいらないんですね。

Prelude> sqrt 2
1.4142135623730951
Prelude> truncate 3.33333333
3

出力。

Prelude> putStrLn "Hello"
Hello

複数I/Oアクションをつなげたい場合はdo{}の中に;でつなげてやればOKみたいです。

Prelude> do {putStr("42^2="); print(42^2)}
42^2=1764

まとめ

以上、こんな感じで軽く使ってみました。Swift触っていてちょっと関数型言語に興味がわいたので触れてみようと思い、そのための環境構築でした。

追記(2015/06/25 9:10)

Homebrewが入っていれば簡単にインストールできるそうです。

brew install ghc

こっちの方が簡単でいいですね。

26
24
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?