程序,数据和结果之间的三元关系的有意义的字段名称吗?

时间:2018-10-20 08:40:01

标签: alloy

我有一个代表软件程序的签名:

sig Program {
    ???: Data -> Result
}

每个程序都将输入数据映射到输出结果。因此,存在三元关系(程序->数据->结果)。

请注意字段名称的问号。您建议使用什么字段名?

IO名称似乎很好:

sig Program {
    IO: Data -> Result
}

然后我可以写一些优雅的表达式,例如:

all p: Program | p.IO ...

但是,名称IO仅对(数据->结果)(对程序->数据->结果)没有意义。

我被困住了。你有什么建议?

1 个答案:

答案 0 :(得分:1)

恕我直言,字段的名称在大多数情况下都是与声明它们的签名相关的,这确实是一件好事。

如果您查看Alloy中的随机样本模块(例如module examples/puzzle/farmer),您会发现字段并不总是具有其各自签名之外的含义:

sig State {
   near: set Object,
   far: set Object
}

在这里,远近并没有真正传达出其“时间”性质的暗示。

长话短说,为了简洁起见,我会坚持使用 io

事实上,我更喜欢:

  • 字段,事实,谓词,断言,参数等都应小写
  • 要大写的签名
  • 枚举(外部租用)和单例签名为大写字母