Haskell(再)入門2回目中編。
こんにちは。竹です。そろそろ"MASAKARI"が飛んできそうで震えてますがやります。怒られることにより圧倒的な成長((
関数の定義方法。
名前::引数 ->返り値 |
これだけです。忘れないでください。いきなり使います。(突然)
詳しいのは後々説明しますが、とりあえず今日はこれをまず覚えてください。あとから使います。
思い出しフェイズ
[ ] |
これ覚えてますか?多相型です。この前出したキーワードでした。
”仲間としては、タプルやEitherなど。
具体的に言うとC++のテンプレートのようないわゆる型ジェネリックと言われているもののように柔軟に扱えれるタイプのことです。”(前回記事よりコピペ)
今回はこれにフォーカス当てて型の続きを進めていきたいと思います。
多相型は型変数
型変数の中でも幾つかを多相型と呼びます。
Haskellにおいて多相型の具体例は
- リスト
- タプル
- Either
- Mayby
などがあります。
今回はこれらを使って”多相型と型変数”のテーマでいきたいと思います。
リスト
リストはリストです。他の言語と同じで”何かの型のリスト(配列)”という形になります。(しかし飽くまでHaskellは一つの型のみ。)
具体的には文字のリスト
[Char] |
整数のリスト
[Interger] |
といった感じです。
ちなみにリストの先頭に要素を追加するときは
入れたいもの:[ ] |
でできます。
さて「型変数is何?」って思うと思います。ではリストの中の長さを求める関数(突然関数を覚えろといった理由)を考えることにしましょう。
例えば
[Interger] |
の長さの関数を考える時
[Interger] -> Int |
といった具合になります。
その際、Doubleで使いたい時とか毎回とか型を変えて関数を作るのって大変ですよね。そこで型を変数のように振舞わせれたら楽ですよね?
安心してください。それが型変数です。
ex.
length::[T] -> Int |
このように定義できます。
ちなみに型コンストラクタと言ってある型に別のものを足しあわせて別の型を作ることを型コンストラクタといいます。
リストで考えると
[] |
で包んでリストになるリスト型の型コンストラクタと理解してください。
タプル
いわゆる無名構造体です。2つの値を組みにした構造です。
Haskellでは
(4,5) |
このように表現します。
これも多相です。
ちなみに二つの型の組み合わせを使って作る型を直積型とも言われます。
Either
二つの値のうちどちらかを取るのがEitherです。
Haskellではどっち取るかをLeft,Rightで表現します。
ナニコレ
下書きに入っていた頑張ってた跡がある過去です(めんどくさくなったんで勝手に打ち切り)