Haskell その1

Haskell

 なんとなく友人が始めたHaskellに興味があったので、

 自分もHaskellの勉強を始めてみました。

 基本的には本を見ながらちょいちょい勉強してる感じです。

 参考にしてる本はこちら

Amazon.co.jp: すごいHaskellたのしく学ぼう!: Miran Lipovaa, 田中 英行, 村主 崇行: 本

 和書であり、読みやすくわかりやすいと思います。

 興味ある方は是非。

 

 あとこの本ではコンパイラGHCになっているので、

 コンパイラGHCを使えばいいんじゃないでしょうか

Haskell その1

 そもそもプログラムを書く前にHaskellって何ぞや?という所から

 Haskellはプログラム言語です。

 ただ、CとかJavaとかと書き方がまったく違います。

 Cのような命令言語はやってほしい処理を全部自分で順番に書きますが、

 Haskell関数型言語と呼ばれるもので、手順というより

 ”関数”そのものを記述する言語です。

 これが中々理解しづらい

 という事で例を挙げつつ実際にプログラミングしてみます。

関数

 Addition x y = x + y

 これがHaskellで2つの引数の和を返すプログラムです。

 順番に説明すると、

 Addition → 関数名。

 x → 1つ目の引数。

 y → 2つ目の引数。

 ここまでで、Additionという関数は、xとyの二つの引数を

 とる関数という事を示しています。

 = → 「この関数の中身は、」という意味。数学の=と一緒です。

    ここが命令型言語との違い。

    = は代入ではなく、関数の中身を示します。

 x + y → 足し算です。

 よって、Addition という関数はxとy二つの引数を足した和を求める関数です!

 

 return ないけどどうすんの?

 という疑問があるかもしれません。

 Haskellにreturn文はありません。

 Haskellの関数は必ず値を返す必要があるためです。

 →void型関数が存在しない

 

 えーでもそれだと何の型が返るかわからんくない?

 ってきっと思うでしょう。

 その辺はHaskellが自動で認識してくれます。

 整数型の評価なのか、浮動小数点型の評価なのか、文字列の評価なのか

 値を見てHaskellが自動で解釈してくれます。

 Haskellのすごいところは関数の遅延評価を行う事です。

 命令型言語と違い、ともかく書かれた事を順番に行うのではなく、

 値を評価する段階になって初めて動き出します。

 

 とりあえず今回はこんなところで。