comparison paper/type.tex @ 91:54cf3b3153fe

Update
author atton <atton@cr.ie.u-ryukyu.ac.jp>
date Thu, 09 Feb 2017 18:37:26 +0900
parents 2be864ed3a79
children 2bc816f4af27
comparison
equal deleted inserted replaced
90:f535393e4043 91:54cf3b3153fe
87 よって、構造体に型を付けるなら「何を内部に持っているのか」を覚えているような型でなくてはならない。 87 よって、構造体に型を付けるなら「何を内部に持っているのか」を覚えているような型でなくてはならない。
88 88
89 ここでレコード型という型を導入する。 89 ここでレコード型という型を導入する。
90 レコード型は複数の型を持ちえる型であり、内部に持っている値にはユニークな名前がラベルとして付いている。 90 レコード型は複数の型を持ちえる型であり、内部に持っている値にはユニークな名前がラベルとして付いている。
91 例えば「Intの変数x とIntの変数yを持つレコード型」は$ \{ x : Int , y : Bool\}$のように記述する。 91 例えば「Intの変数x とIntの変数yを持つレコード型」は$ \{ x : Int , y : Bool\}$のように記述する。
92 C における構造体ではリストに対応する。 92 C における構造体ではリスト~\ref{src:struct}にのソースコードに対応する。
93 % TODO C の構造体 93
94 \lstinputlisting[label=src:struct, caption=C におけるレコード型である構造体の定義] {src/struct.c}
94 95
95 レコード型の値を構成する際には、内部に格納する値を全て与えることで構成できる。 96 レコード型の値を構成する際には、内部に格納する値を全て与えることで構成できる。
96 % TODO C の構造体の初期化 97 C 言語ならばフィールドの値を \verb/{}/ 内部に \verb/,/ 区切りで与えることで構造体を構成できる(リスト~\ref{src:struct-init})。
98 \lstinputlisting[label=src:struct-init, caption=C 言語の構造体の初期化] {src/struct-init.c}
99
97 レコード型から値を取り出す際にはラベル名を用いた射影を利用する。 100 レコード型から値を取り出す際にはラベル名を用いた射影を利用する。
98 C 言語では構造体の後に \verb/./ キーワードを付けた後にラベル名を指定する。 101 C 言語では構造体の後に \verb/./ キーワードを付けた後にラベル名を指定する。
99 102
100 これで構造体に対する型付けができた。 103 これで構造体に対する型付けができた。
101 % }}} 104 % }}}