Haskell 带{bag}和多重性约束的带注释关联的精确语义

Haskell 带{bag}和多重性约束的带注释关联的精确语义,haskell,uml,associations,class-diagram,Haskell,Uml,Associations,Class Diagram,假设我在UML类图中有A--r1{bag}[1..2]->B(也就是说,r1是从A到B的关联,并用{bag}和多重性[1..2]注释) 我的问题:如果a:a是a的实例,以下集合有效吗 a、 r1={(b1,1)、(b1,2)、(b2,1)}//集合包含两个b1副本和一个b2副本 换句话说,多重性边界(即[1..2])适用于仅解释为r1:A-->B的关联,或适用于r1:A-->Bag(B)?在前一种解释中,上述集合是有效的,因为r1最多包含两个B实例,但在后一种解释中则不是,因为r1包含三个Bag

假设我在UML类图中有
A--r1{bag}[1..2]->B
(也就是说,r1是从A到B的关联,并用{bag}和多重性[1..2]注释)

我的问题:如果a:a是a的实例,以下集合有效吗

a、 r1={(b1,1)、(b1,2)、(b2,1)}//集合包含两个b1副本和一个b2副本

换句话说,多重性边界(即[1..2])适用于仅解释为r1:A-->B的关联,或适用于r1:A-->Bag(B)?在前一种解释中,上述集合是有效的,因为r1最多包含两个B实例,但在后一种解释中则不是,因为r1包含三个Bag(B)元素!哪种解释是正确的

UML中的多重性约束在的第7.5.3章中进行了解释,如中所述

p、 s.1:当我们用{seq}替换{bag}时,会出现类似的问题


p、 s.2:我添加了haskell标签,以获得来自大型haskell社区的评论,正如@xmojmr所建议的。感谢@peter在他的回答中很好地绘制了图片。

如规范中所述,这个袋子是无序的、非独特的集合。 但是,这描述了所指向的元素之间的关系

因此,您的示例可以用任意一种方式表示:

这意味着A引用了一到两个B实例,这些引用存储在一个包中(或任何非唯一、未排序的集合;但这是实现细节)


回答您的问题:否,因为袋子包含三个B实例,而允许的最大值是两个B。

如规范所述,袋子是无序的、不均匀的集合。 但是,这描述了所指向的元素之间的关系

因此,您的示例可以用任意一种方式表示:

这意味着A引用了一到两个B实例,这些引用存储在一个包中(或任何非唯一、未排序的集合;但这是实现细节)


回答您的问题:否,因为袋子包含三个B实例,而允许的最大值是两个B。

如规范所述,袋子是无序的、不均匀的集合。 但是,这描述了所指向的元素之间的关系

因此,您的示例可以用任意一种方式表示:

这意味着A引用了一到两个B实例,这些引用存储在一个包中(或任何非唯一、未排序的集合;但这是实现细节)


回答您的问题:否,因为袋子包含三个B实例,而允许的最大值是两个B。

如规范所述,袋子是无序的、不均匀的集合。 但是,这描述了所指向的元素之间的关系

因此,您的示例可以用任意一种方式表示:

这意味着A引用了一到两个B实例,这些引用存储在一个包中(或任何非唯一、未排序的集合;但这是实现细节)


回答您的问题:否,因为包中包含三个B实例,而允许的最大值是两个B。

如果您将标签添加为“聪明人注意吸引者”,您的问题可能会在此处受到热烈欢迎,或者可能会在此处得到解译。感谢您的建议,但我是否可以在此处添加标签,以便在这个问题并没有直接的关系。这会很好,但我担心这样做会损害stackoverflow规则。不是吗?在我看来,你已经损害了Stack Overflow社区,你的问题远远不是可以理解的实际编码问题。你能为像我这样的非haskell人简化/翻译它吗ML谈论图片。你能把你的
A--r1{bag}[1..2]->B
代码翻译成
UML
图片吗?在
UML
的另一边是一些
code
,想象一下
C
代码。你能把你的
A={(b1,1)、(b1,2)、(b2,1)}
进入
C#
代码示例?您似乎怀疑两种可能的解释中的哪一种是正确的。您能将这两种情况并排清楚地显示出来吗?(图片+代码)*2?我认为@peter很好地做到了你的要求。现在的问题是,如果我想实现他回答中的图片,并且我有一个类型包集合,在这个集合中放置两个b1和一个b2,是否违反了约束条件。正如我在问题中所写的,有两种解释:1)它违反了,因为集合包含三个元素。2) 不会违反,因为集合中只有两个引用B实例。如果您添加标签为smart guy attention Attractor,则您的问题可能会在此处受到热烈欢迎,或者可能会在此处被破译。感谢您的建议,但我可以在这里添加标签,只是为了吸引其他社区的注意,而不是直接相关的问题。这会很好,但我担心这样做会损害stackoverflow规则。我不会吗?在我看来,你已经破坏了堆栈溢出社区,你的问题远远不能理解实际的编码问题。你能为像我这样的非哈斯凯尔人简化/翻译一下吗<代码>UML谈论图片。你能把你的
A--r1{bag}[1..2]->B
代码翻译成
UML
图片吗?在
UML
的另一边是一些
code
,想象一下
C#
代码。你能把你的
a.r1={(b1,1)、(b1,2)、(b2,1)}
翻译成
C#
代码示例吗?你似乎怀疑两种可能的解释中哪一种是正确的。你能清楚地把这两个箱子并排展示吗?(图片+代码)*2?我想@peter很好心地按照你的要求做了。现在的问题是,如果我想实现他答案中的图片,我有一个类型为bag的集合,在这个集合中放两个b1和一个b2,是否违反了约束条件。正如我在文章中所写的,有两种解释