在 Haskell 中,我们有一个像
(a, b, ...)
这样的元组类型。我正在尝试阅读一些 SML 代码,并且我已经知道值 (a, b)
类型是 a * b
。但后来我看到了这个:
type ('a,'b) reader = 'b -> ('a * 'b) option
并且我理解
('a * 'b) option
- 在 Haskell 中它是 Maybe (a,b)
,但是 ('a,'b) reader
是什么?! 为什么不是('a * 'b) reader
? 当我得到类型级别元组的语法是something * something
...
为类型引入泛型类型参数时,括号不是必需的。例如
datatype 'a list = Nil | Cons of 'a * 'a list
当引入多个泛型类型参数时,我们使用括号和逗号。例如
datatype ('a, 'b) either = Left of 'a | Right of 'b;
正如评论中所指出的,这不是描述了一个元组。