お腹.ヘッタ。

関数型とかセキュリティとか勉強したい。進捗つらぽよ

Haskell(再)入門0回目イントロダクション(環境構築)。

どうもこんにちは。結局セキュリティ記事じゃありません。Haskell(再)入門記事です。

全体で20回ぐらいに続けたいと思います。(こんな備忘録ブログだから誰も読まないだろうなぁ読んでる人いるのかなぁ。。。モチベ出すためにだれかつっこみとかコメください。。。。)
なおおそらく後半は明らかに間違えているとこなど、知らないから勉強のために書いてるなど付け焼刃感が出ると思います。

今年度中には書き終えたいですね。。。。

今回はイントロダクション。つまり僭越ながら0回目として始めましょう。大丈夫。配列だって0からだ。問題ない。
(うん。。。。?luaはから1だけど?なんのことだか。。。)


さてさて、まずは前書きとしてHaskellってなに?というところからいきましょう。

Haskellとはwikiの言葉を借りると

Haskell高階関数や静的多相型付け、定義可能な演算子、例外処理といった多くの言語で採用されている現代的な機能に加え、パターンマッチングやカリー化、リスト内包表記、ガードといった多くの特徴的な機能を持っている。また、遅延評価や再帰的な関数や代数的データ型もサポートしているほか、独自の概念として圏論のアイデアを利用し参照透過性を壊すことなく副作用のある操作(例えば 代入、入出力、配列など)を実現するモナドを含む。このような機能の組み合わせにより、手続き型プログラミング言語では記述が複雑になるような処理がしばしば簡潔になるばかりではなく、必要に応じて手続き型プログラミングを利用できる。

だそうです。

さて高階関数?静的多相?カリー化?美味しいの?となる方がほとんどでしょう。参照透過?ファッ!?圏論
もう入門としては敷居が高いですね。
記事書く私でさえ圏についてはよく知りません。


一応さっきの言葉の解説として
高階関数:
関数を引数にしたり、関数を戻り値としたりすること。
いわゆるクロージャなどですね。
ちなみに関数がファーストクラス(第1級)である関数型(HaskellやML)やSwift,JavaScriptといったプログラミング言語で実装されます。

静的多相型付け:
オブジェクト志向などポリモーフィズムという言葉で多くの方は聞いたことがあるのではないでしょうか。それのことです。
平たく言うと型システムの性質を表す言葉で、複数の型に属することを許すという性質を指します。
多様性という言葉が多く使われますね。ちなみに対義語はモノモーフィズム、単態性だそうです。

カリー化:
高階関数と一緒に覚えましょう。「複数の引数をとる関数を1変数関数に置き換えることをカリー化!。」
(つまり関数の引数を減らすことですね。)
参照透過:
 簡単にいうと必ず同じ結果になる完全性。ちなみにこれが理由でHaskellでは変数に再代入ができません。これを純粋関数型言語と呼んだりします。

圏論:
説明できないんで
東大 理学部情報科学科/大学院情報理工学系研究科|情報科学科NAVIgation
を読んで(面目無い)。Haskellモナドの根底にあるもの。



さて本題の環境を作るところから始めましょう。



HaskellコンパイラとしてはGHC(Glasgow Haskell Compiler)とHugsが有名です。
エディタのプラグインはどこのでも(atomとかVimとか)、どんな環境でも(OSを選ばない)つくれます。
簡単にやる方法はネット上にいっぱいあるので私の好きな環境を載せたいと思います。
状態としてはSublimeHaskellです。

1: Haskell Platform(処理系)をいれる。
Download Haskell Platform

2:SublimeText入れる
http://www.sublimetext.com/

3:SublimeTextの日本語化などパッケージコントロールをいれる
MacOSX - MacでSublime Text 3のインストールと日本語化メモ - Qiita

4:SublimeREPLをインストール
”Package Conreol:Install Package”を選択します

 SublimeREPLを選択します。
[Preferences]->[Package Settings]->[SublimeREPL]->[Settings - Default] の

>"default_extend_env": {},

に PASSをいれる。ここにはGHCi.があるディレクトリを指定。

5.FluentREPLのインストール
 Haskellソースを書いた後つかうもので、保存と同時にghciにロードするプラグインFluentREPLをインストールします。
 こいつはどうやらF#とかClojureにも対応してるとか。
 インストール方法は
https://github.com/zaneli/FluentREPL

英語だけどグーグル翻訳でみれば大丈夫でしょう。

6: 動作をみる
コードを書いたら保存。そうするとGHCがつかえるでしょう。

こんな感じでIDEができちゃいます。
記事に間違いがあれば連絡ください。
今回はここまで。次は実際にコードを書いていきますお楽しみに。

参考にすべきサイトmomocus.hatenablog.com
Setup Sublime Text as Haskell IDE