top page > computer > haskell > web_lecture > for_programmer > trans_unit.html
更新日:
文責: 重城良国

ユニット型について

(工事中 70%)

はじめに

ユニット型はユニット値のみを含む型だ。ユニット型は()として表される。またその唯一の値であるユニット値もまた()として表される。これは0要素タプルとも考えられる。型Boolは値Trueまたは値Falseのどちらかであり情報を持つが、ユニット型はユニット値ひとつしか持たないので情報量は0だ。引数や返り値へのユニット値の追加または削除は自由にできる。

ユニット型の追加・削除

ユニット型は引数にも返り値にも追加・削除することができる。つまり以下の型はどれも情報としては同じである。

a
() -> a
(a, ())

値と関数が同じ

互いに相手だけから導かれれば情報としては同じであることになる。

val :: a
fun :: () -> a

valとfunが情報としては同じであることを示す。

valからfunを導く

以下のようにすると値valのみから関数funが定義できる。

fun _ = val

funからvalを導く

以下のようにすると関数funのみで値valが定義できる。

val = fun ()

互いに互いを追加の情報なしに定義できるのでこれらは情報としては同じである。

値とタプルが同じ

以下のふたつについても確認する。

val :: a
tup :: (a, ())

valでtupを定義

値valによってタプルtupを定義する。

tup = (val, ())

tupでvalを定義

タプルtupによって値valを定義する。

val = fst tup

まとめ

たとえばBool型であればTrueまたはFalseなのでどちらかであることがわかれば情報が増える。しかし、()型には()しかないので()であることがわかっても情報は増えない。情報量が0なので引数に追加、削除することができるし、返り値や値そのものにタプルとして追加することも、削除することもできる。

「2引数関数の復習」へもどる 「単純な値の変換」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics