1struct::set(n) Tcl Data Structures struct::set(n)
2
3
4
5______________________________________________________________________________
6
8 struct::set - Procedures for manipulating sets
9
11 package require Tcl 8.0
12
13 package require struct::set ?2.2.3?
14
15 ::struct::set empty set
16
17 ::struct::set size set
18
19 ::struct::set contains set item
20
21 ::struct::set union ?set1...?
22
23 ::struct::set intersect ?set1...?
24
25 ::struct::set difference set1 set2
26
27 ::struct::set symdiff set1 set2
28
29 ::struct::set intersect3 set1 set2
30
31 ::struct::set equal set1 set2
32
33 ::struct::set include svar item
34
35 ::struct::set exclude svar item
36
37 ::struct::set add svar set
38
39 ::struct::set subtract svar set
40
41 ::struct::set subsetof A B
42
43______________________________________________________________________________
44
46 The ::struct::set namespace contains several useful commands for pro‐
47 cessing finite sets.
48
49 It exports only a single command, struct::set. All functionality pro‐
50 vided here can be reached through a subcommand of this command.
51
52 Note: As of version 2.2 of this package a critcl based C implementation
53 is available. This implementation however requires Tcl 8.4 to run.
54
56 ::struct::set empty set
57 Returns a boolean value indicating if the set is empty (true),
58 or not (false).
59
60 ::struct::set size set
61 Returns an integer number greater than or equal to zero. This is
62 the number of elements in the set. In other words, its cardinal‐
63 ity.
64
65 ::struct::set contains set item
66 Returns a boolean value indicating if the set contains the ele‐
67 ment item (true), or not (false).
68
69 ::struct::set union ?set1...?
70 Computes the set containing the union of set1, set2, etc., i.e.
71 "set1 + set2 + ...", and returns this set as the result of the
72 command.
73
74 ::struct::set intersect ?set1...?
75 Computes the set containing the intersection of set1, set2,
76 etc., i.e. "set1 * set2 * ...", and returns this set as the re‐
77 sult of the command.
78
79 ::struct::set difference set1 set2
80 Computes the set containing the difference of set1 and set2,
81 i.e. ("set1 - set2") and returns this set as the result of the
82 command.
83
84 ::struct::set symdiff set1 set2
85 Computes the set containing the symmetric difference of set1 and
86 set2, i.e. ("(set1 - set2) + (set2 - set1)") and returns this
87 set as the result of the command.
88
89 ::struct::set intersect3 set1 set2
90 This command is a combination of the methods intersect and dif‐
91 ference. It returns a three-element list containing
92 "set1*set2", "set1-set2", and "set2-set1", in this order. In
93 other words, the intersection of the two parameter sets, and
94 their differences.
95
96 ::struct::set equal set1 set2
97 Returns a boolean value indicating if the two sets are equal
98 (true) or not (false).
99
100 ::struct::set include svar item
101 The element item is added to the set specified by the variable
102 name in svar. The return value of the command is empty. This is
103 the equivalent of lappend for sets. If the variable named by
104 svar does not exist it will be created.
105
106 ::struct::set exclude svar item
107 The element item is removed from the set specified by the vari‐
108 able name in svar. The return value of the command is empty.
109 This is a near-equivalent of lreplace for sets.
110
111 ::struct::set add svar set
112 All the element of set are added to the set specified by the
113 variable name in svar. The return value of the command is empty.
114 This is like the method include, but for the addition of a whole
115 set. If the variable named by svar does not exist it will be
116 created.
117
118 ::struct::set subtract svar set
119 All the element of set are removed from the set specified by the
120 variable name in svar. The return value of the command is empty.
121 This is like the method exclude, but for the removal of a whole
122 set.
123
124 ::struct::set subsetof A B
125 Returns a boolean value indicating if the set A is a true subset
126 of or equal to the set B (true), or not (false).
127
130 This document, and the package it describes, will undoubtedly contain
131 bugs and other problems. Please report such in the category struct ::
132 set of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist].
133 Please also report any ideas for enhancements you may have for either
134 package and/or documentation.
135
136 When proposing code changes, please provide unified diffs, i.e the out‐
137 put of diff -u.
138
139 Note further that attachments are strongly preferred over inlined
140 patches. Attachments can be made by going to the Edit form of the
141 ticket immediately after its creation, and then using the left-most
142 button in the secondary navigation bar.
143
145 cardinality, difference, emptiness, exclusion, inclusion, intersection,
146 membership, set, symmetric difference, union
147
149 Data structures
150
152 Copyright (c) 2004-2008 Andreas Kupries <andreas_kupries@users.sourceforge.net>
153
154
155
156
157tcllib 2.2.3 struct::set(n)