Предположим, у меня есть следующие подписи:
sig A {}
sig B {}
sig P {
a: A,
b: B
}
Как мне написать функцию f
, скажем, такую, что f
возвращает набор P
, для которого каждый член имеет значениеx: A
для его поля a
?
Ввод выражения {p: P | p.a = x}
в оценщик возвращает мне набор, но когда я пытаюсь определить f
таким образом
fun f(a: A) : set P {
{ p: P | p.a = a }
}
сплав говорит мне, что я допустил ошибку:
Произошла ошибка типа. Это не может быть правовым реляционным соединением, где левая часть - это p (type = {this / P}) правая рукасторона (тип = {это / A})