人気ブログランキングへ

2009年05月10日

Yet Another Haskell Tutorial (和訳): 4.2 多相型

4.2 多相型

Haskellは多相型システムを採用している。これは本質的には、以前それとなく言及しておいた型変数というものを持つことができるということだ。たとえば、tailのような関数は、リストの要素が何であってもかまわないことに注意してほしい。

Prelude> tail [5,6,7,8,9]
[6,7,8,9]
Prelude> tail "hello"
"ello"
Prelude> tail ["the","man","is","happy"]
["man","is","happy"]

このようなことが可能なのは、tail が多相型 ([α] → [α]) を持つからである。つまり、tailあらゆるリストを引数に取ることができ、同じ型のリストを返す。
同じ分析により、fst の型も説明できる。

Prelude> :t fst
forall a b . (a,b) -> a

ここで、GHCi は型の値の完全修飾名を明らかにしている。つまり、すべての型 ab について、 fst(a, b) から a への関数であることを示している。

演習

演習 4.2 以下の式を自分で計算し、もしそれが型を持つならその型を確かめよ。また、式が型エラーであるかどうか注意せよ。
1. snd
2. head
3. null
4. head . tail
5. head . head


前ページ「4.1 単純型
次ページ「4.3 型クラス


5 Basic Input/Output
6 Modules
7 Advanced Features
8 Advanced Types
9 Monads
10 Advanced Techniques
A Brief Complexity Theory
B Recursion and Induction
C Solutions To Exercises


これは、Haskell (ハスケル) のチュートリアル "Yet Another Haskell Tutorial" を日本語に翻訳したものです。
オリジナルのドキュメントは、
http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf
などから入手できます。
日本語訳に関するご指摘は、コメントとしてお寄せください。

posted by K/I at 01:14 | 東京 ☀ | Comment(0) | TrackBack(0) | Yet Another Haskell Tutorial | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。