我有一个代表软件程序的签名:
sig Program {
???: Data -> Result
}
每个程序都将输入数据映射到输出结果。因此,存在三元关系(程序->数据->结果)。
请注意字段名称的问号。您建议使用什么字段名?
IO名称似乎很好:
sig Program {
IO: Data -> Result
}
然后我可以写一些优雅的表达式,例如:
all p: Program | p.IO ...
但是,名称IO仅对(数据->结果)(对程序->数据->结果)没有意义。
我被困住了。你有什么建议?
答案 0 :(得分:1)
恕我直言,字段的名称在大多数情况下都是与声明它们的签名相关的,这确实是一件好事。
如果您查看Alloy中的随机样本模块(例如module examples/puzzle/farmer
),您会发现字段并不总是具有其各自签名之外的含义:
sig State {
near: set Object,
far: set Object
}
在这里,远近并没有真正传达出其“时间”性质的暗示。
长话短说,为了简洁起见,我会坚持使用 io 。
事实上,我更喜欢: