虽然我在阅读mondads上的this教程,但发现了以下表达式。monad教程中使用的一些语法的含义
data M a = Raise Exception |返回
类型异常=字符串
它说,一个被用作类型变量和范围中引发异常值,并返回一个,但我不理解使用(或含义)M在这里。如果M是数据类型为什么它使用像M a?
虽然我在阅读mondads上的this教程,但发现了以下表达式。monad教程中使用的一些语法的含义
data M a = Raise Exception |返回
类型异常=字符串
它说,一个被用作类型变量和范围中引发异常值,并返回一个,但我不理解使用(或含义)M在这里。如果M是数据类型为什么它使用像M a?
M
是定义的类型构造函数的名称,a
是此构造函数的类型参数。要稍后使用数据类型,必须给构造函数M
并提供a
的类型参数,例如, M Int
。
M不是数据类型,它是精确的数据类型构造函数。 – Satvik
你是对的,这是sl。。 – waldrumpus
您需要区分值构造函数和类型构造函数。
M
不是数据类型,它是数据类型构造函数。因此,要构建M a
类型的数据类型,需要使用Type构造函数M
(数据类型为a
)来获取类型为M a
的数据类型。例如数据类型M Int
或M String
。
另一方面Raise
和Return
是值构造函数。因此,要获得类型值为M Int
的值,请输入数值构造函数Return
的值Int
,如Return 2
。
背后有一个很好的理论。您可以阅读更多关于价值和类型构造函数here。
非常好的解释,非常精确。 – waldrumpus
我假设这是Haskell代码;如果是这样,你可能会考虑重新标记。 – waldrumpus