Concurrency 需要解释CML的语法吗

Concurrency 需要解释CML的语法吗,concurrency,sml,ml,Concurrency,Sml,Ml,有人能解释一下单元格数据类型的语法吗: datatype 'a request = READ | WRITE of 'a datatype 'a cell = CELL of { reqCh : 'a request chan, replyCh : 'a chan } 我不确定你到底被什么弄糊涂了,但这应该可以解释一下这些类型 数据类型'a cell有一个构造函数cell,其参数是一个带有两个字段的记录: reqCh,它是一个'a request chan,和replyCh,它是一个

有人能解释一下单元格数据类型的语法吗:

datatype 'a request = READ | WRITE of 'a

datatype 'a cell = CELL of {
  reqCh : 'a request chan,
  replyCh : 'a chan
}

我不确定你到底被什么弄糊涂了,但这应该可以解释一下这些类型

数据类型
'a cell
有一个构造函数
cell
,其参数是一个带有两个字段的记录:
reqCh
,它是一个
'a request chan
,和
replyCh
,它是一个
'a chan

您没有提供
chan
的定义,因此我无法真正澄清这一点。但是,
“请求
有两个构造函数,
读取
写入
。前者没有论据,而 第二个参数的类型为
'a

例如,给定某个类型的
t
、一个
t请求chan
x
、一个
t chan
y
,您可以有如下内容:

val aCell : t cell = CELL {reqCh = x, replyCh = y}

我无法理解这个请求:“一个请求,一部分。它说明了reqCh的数据类型是什么?这意味着,
reqCh
是一个
t chan
,其中类型
t
s request
,对于某些类型
s
。由于您尚未定义什么是
chan
,因此我无法进一步解释。如果你想要一个<代码>请求> /代码>的例子,请考虑<代码> Read < /Cord>。code>READ是针对任何类型的
s
s请求
WRITE 5
是一个
int请求
WRITE“foo”
是一个
字符串请求。那么,reqCh属于“Write 5 chan”类型意味着什么呢?
请求
不是
写入5
。但是,
WRITE 5
是类型为
int request
的值。您似乎不太了解ML中的类型系统是如何工作的,因此我建议您阅读或使用类似的信息。要了解什么是
chan
类型,请查看。
t chan
是处理传递类型为
t
的消息的类型,因此
s request chan
是处理传递类型为
s request
的消息的类型。