('a,'b) 和 ('a*'b) 有什么区别?

问题描述 投票:0回答:1

在 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
...

haskell syntax tuples sml
1个回答
0
投票

为类型引入泛型类型参数时,括号不是必需的。例如

datatype 'a list = Nil | Cons of 'a * 'a list

当引入多个泛型类型参数时,我们使用括号和逗号。例如

datatype ('a, 'b) either = Left of 'a | Right of 'b;

正如评论中所指出的,这不是描述了一个元组。

© www.soinside.com 2019 - 2024. All rights reserved.