35
34

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.

Haskell Day 2016のチュートリアルの準備

Last updated at Posted at 2016-09-03

2016年9月17日に、 Haskell Day 2016 が開催されます。このエントリでは午前中のHaskell チュートリアルの参加者向けに、チュートリアルの概要と、参加するために必要な準備について説明します。なお、チュートリアルはTurtle.Tutorialに沿って進めますので、本エントリはTurtle.Tutorialを始めるための日本語資料としても利用できるでしょう。

【追記】本編が開催されました。【/追記】

チュートリアルの概要

他言語の経験者を対象に、Haskellでコマンドラインツールを作る演習を開催します。本チュートリアルは以下の内容を含みます。

  • Haskellの実行環境の作り方 (本エントリ)
  • Haskellでスクリプトを作成するのに便利なライブラリTurtleの紹介
  • Turtleを利用した、簡単なコマンドラインツールの作成

以下の内容は 含みません

  • パターンマッチ、代数的データ型、再帰など、関数型言語的な側面の詳説
  • 型付きラムダ計算、ファンクタ・モナドなど、Haskellの理論的背景

チュートリアルは、概要を説明した後に実際に手を動かしてもらうという手順で進めます。詰まったときには手を挙げてもらえれば、チューターか講師が疑問を解決するお手伝いをします。

なお、チュートリアル開始前に、Haskellの経験者の中から ボランティアでチューターをしていただける方を募集する予定 ですので、普段からHaskellを利用される方はお手伝いしていただけると幸いです。

チュートリアルの持ち物

演習時間をとりますので、PCを持ってこないと暇です。PCの貸出は行ないません。

  • 本エントリに従ってHaskellとTurtleの実行環境が用意されたPC。

チュートリアルの準備

チュートリアルの参加者は、以下の手順に従ってStackとGHC、turtleパッケージをインストールして下さい。基本的にTurtle.Tutorialにも書かれている内容ですので、英語に抵抗がない方は本家も一緒に参照するといいでしょう。

stackのインストール

Stack はHaskellのビルドツールであり、HaskellのコンパイラであるGHCのインストールまで含めてHaskellを利用した開発を全般的にサポートしてくれるものです。 インストール手順に従い、Stackを各自のPCへインストールして下さい。

  • windowsはインストーラーから (Windows 64-bit Installer などのリンク)
  • Linux、UNIX系OSは curl -sSL https://get.haskellstack.org/ | sh コマンドで
  • MacはhomebrewでもO.K. brew install haskell-stack

Stackが管理するパッケージデータベースは、プロジェクトごとに分かれています。本エントリではglobal projectを利用する想定ですので、以降、stackコマンドを実行するときは必ず 他のHaskellプロジェクトのディレクトリ内で実行しない ように気をつけて下さい。

また、 元々stackがインストールされていた人は、global project で使われる resolverが古すぎないか確認 して下さい。本チュートリアルでは lts-6.x を使ってます。

使われるresolverは stack.yaml に書かれています。 stack path --config-locationコマンドで stack.yaml の場所を確認し、ファイル内のresolver:の項目を確認して下さい。lts-6.x 以外が指定されている場合は、 stack.yaml を編集して下さい。本エントリ執筆時点では、lts-6.14を指定するのが一番いいでしょう。

GHCのインストール

GHCはHaskellのコンパイラの1つです。Stackは指定した resolver に対応したGHCをインストールしてくれます。 lts-6.x では ghc-7.10.3 がインストールされます。(ghc-8.x 向けのltsは、本エントリの執筆時点ではまだ出ていません)

  • stack setup を実行し、ghcをインストール

turtleのインストール

Stackを使うと resolverに含まれているパッケージを簡単にインストールすることができます。チュートリアルではturtleパッケージを利用しますので、事前にこれをインストールしておいて下さい。

  • stack build turtle を実行し、 turtle パッケージをインストール

動作確認その1

REPLを利用し、環境が整ったかを確認します。次のコマンドを実行し、出力を確認して下さい。REPLからpwd関数が呼び出せれば問題ありません。

$ stack repl
Prelude> import Turtle
Prelude Turtle> pwd
FilePath "/tmp"
Prelude Turtle> :q
Leaving GHCi.
$ 

動作確認その2

stackを使うと、Haskellでスクリプト(実際は単に毎回コンパイルされるだけですが)を書くことができます。次の内容で pwd.hs という名前のファイルを作って下さい。

#!/usr/bin/env stack
-- stack --install-ghc runghc --package turtle
import Turtle

main = pwd >>= print

作成したスクリプトにパーミッションを与え、実行します。REPLの時と同様にpwdの結果が出力できていれば問題ありません。

$ chmod a+x pwd.hs
$ ./pwd.hs
FilePath "C:\\msys64\\tmp"

まとめ

HaskellでTurtle.Tutorialを実施するための環境構築方法を説明しました。チュートリアルではHaskellを用いたコマンドラインツールの作成を行います。副作用の塊であるコマンドラインツールとHaskellは相性が良くないと思われる方もいるかもしれませんが、まったくそんなことはありません。超強力な静的型チェックと静的言語ならではの実行効率、さらにHackage が提供する豊富なライブラリによる実用性を兼ね備えているのがHaskellの本当の魅力です。興味のある方はぜひ、Haskell Day 2016 のチュートリアルにお越しください。

あと、当日、チューターをしてくださる方の参加もお待ちしています!

35
34
0

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
35
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?