0

このモナドのチュートリアルを読んでいるときに、次の式を見つけました。

データ M a = 例外を発生させる | 返す

タイプ例外 = 文字列

Raise Exception と Return a で型変数と値の範囲として a が使われているとありますが、ここで M の使い方 (または意味) がわかりません。M がデータ型の場合、なぜ M a のように使用されるのですか?

4

2 に答える 2

5

値コンストラクターと型コンストラクターを区別する必要があります。

Mはデータ型ではなく、データ型コンストラクターです。したがって、Type のデータ型を構築するには、Type のデータ型を取得するType のデータ型であるM aType コンストラクターを指定します。たとえば、データ型または.MaM aM IntM String

一方RaiseReturnここでは値コンストラクターです。したがって、型の値を取得するにはM Int、値コンストラクターReturnに TypeIntのような値を入力するとしますReturn 2

これには素晴らしい理論があります。値コンストラクターと型コンストラクターの詳細については、こちらを参照してください。

于 2012-09-12T13:00:35.963 に答える
0

Mは定義されている型コンストラクターの名前であり、aこのコンストラクターの型パラメーターです。後でデータ型を使用するには、コンストラクターを指定し、M型引数を指定する必要があります。aM Int

于 2012-09-12T12:23:54.257 に答える