StandardMLでいくつかのデータ型を定義するとします。
datatype color = orange | navy | teal | silver | hsl of real * real * real;
datatype direction = east | north | west | south;
次に、上記のデータ型を使用する値を定義します。
type Cursor = int * int * color * direction;
val cursor : Cursor = (0, 0, orange, east);
位置、描画色、方向性を持った「カーソル」です。私がしたいのは、そのプロパティを最初は未定義にすることです。color
次のように、それぞれとデータ型にコンストラクターを追加できます(位置の値direction
を使用してこれを行うにはどうすればよいですか?)。int
datatype color = orange | teal | silver | hsl of real * real * real | undefined;
datatype direction = east | north | west | south | undefined;
val cursor : Cursor = (0, 0, undefined, undefined);
データ型ごとに追加のコンストラクターを明示的に定義することなく、これを実行したいと思います。undefined
あなたは良い、きれいな解決策を考えることができますか?タイプに関係なく、「未定義の値」の形式を単純に使用できるジェネリックの形式。大まかに言うと、Javaに類似してNullable
います。
私の動機は、カーソルのプロパティが最初は未定義であるということです。