union - 集合の和演算子
intersect - 集合の共通部分演算子
minus - 集合差演算子
subset - 部分集合演算子
使い方
s1 union s2
`union`(s1, s2, s3,...)
s1 intersect s2
`intersect`(s1, s2, s3, ...)
s1 minus s2
`minus`(s1,s2)
s1 subset s2
`subset`(s1,s2)
パラメータ
s1, s2, s3, ... - 集合または式
|
説明
|
|
•
|
union, intersect, minus, subset ルーチンはそれぞれ集合の和、共通部分、差、部分集合をとる演算に使われます。union と intersect ルーチンは中置、結合的、可換、n 項の演算子です。minus と subset ルーチンは 2 項中置演算子です。
|
•
|
引数が式ならば、そのオブジェクトは集合に評価できなくてはなりません。どれかの引数が集合に割り当てることができなければ、エラーが返されます。たとえば {1,2,3} と S の和集合は未評価な値を返し、{1,2,3} と 4 の和集合はエラーを返します。
|
•
|
呼び出し手順 `union`(s1,s2) を使うときは、union はキーワードなので、バッククォートで囲まなければいけません。
|
|
注意: 集合演算はアドレステストに基づいています。集合の2個の要素が同じであっても、異なるアドレスを持てばテストは失敗します。最後の例はこれを説明しています。
|
|
|
例
|
|
| (2.1) |
| (2.2) |
| (2.3) |
| (2.4) |
>
|
{3,4} union a union {3,7};
|
| (2.5) |
>
|
`union`({3,4},a,{3,7});
|
| (2.6) |
>
|
{a,b} subset {a,c,b,d};
|
| (2.7) |
>
|
`subset`({a,b}, {a,c,d,e});
|
| (2.8) |
| (2.9) |
>
|
A := {e -> type(e, 'integer')}: B := {e -> type(e, 'integer')}:
A subset B; A intersect B;
|
| (2.10) |
|
|