struct::set(3tcl) Tcl Data Structures struct::set(3tcl)
______________________________________________________________________________
NAME
struct::set - Procedures for manipulating sets
SYNOPSIS
package require Tcl 8.0
package require struct::set ?2.2.3?
::struct::set empty set
::struct::set size set
::struct::set contains set item
::struct::set union ?set1...?
::struct::set intersect ?set1...?
::struct::set difference set1 set2
::struct::set symdiff set1 set2
::struct::set intersect3 set1 set2
::struct::set equal set1 set2
::struct::set include svar item
::struct::set exclude svar item
::struct::set add svar set
::struct::set subtract svar set
::struct::set subsetof A B
______________________________________________________________________________
DESCRIPTION
The ::struct::set namespace contains several useful commands for pro-
cessing finite sets.
It exports only a single command, struct::set. All functionality pro-
vided here can be reached through a subcommand of this command.
Note: As of version 2.2 of this package a critcl based C implementation
is available. This implementation however requires Tcl 8.4 to run.
COMMANDS
::struct::set empty set
Returns a boolean value indicating if the set is empty (true),
or not (false).
::struct::set size set
Returns an integer number greater than or equal to zero. This is
the number of elements in the set. In other words, its cardinal-
ity.
::struct::set contains set item
Returns a boolean value indicating if the set contains the ele-
ment item (true), or not (false).
::struct::set union ?set1...?
Computes the set containing the union of set1, set2, etc., i.e.
"set1 + set2 + ...", and returns this set as the result of the
command.
::struct::set intersect ?set1...?
Computes the set containing the intersection of set1, set2,
etc., i.e. "set1 * set2 * ...", and returns this set as the re-
sult of the command.
::struct::set difference set1 set2
Computes the set containing the difference of set1 and set2,
i.e. ("set1 - set2") and returns this set as the result of the
command.
::struct::set symdiff set1 set2
Computes the set containing the symmetric difference of set1 and
set2, i.e. ("(set1 - set2) + (set2 - set1)") and returns this
set as the result of the command.
::struct::set intersect3 set1 set2
This command is a combination of the methods intersect and dif-
ference. It returns a three-element list containing
"set1*set2", "set1-set2", and "set2-set1", in this order. In
other words, the intersection of the two parameter sets, and
their differences.
::struct::set equal set1 set2
Returns a boolean value indicating if the two sets are equal
(true) or not (false).
::struct::set include svar item
The element item is added to the set specified by the variable
name in svar. The return value of the command is empty. This is
the equivalent of lappend for sets. If the variable named by
svar does not exist it will be created.
::struct::set exclude svar item
The element item is removed from the set specified by the vari-
able name in svar. The return value of the command is empty.
This is a near-equivalent of lreplace for sets.
::struct::set add svar set
All the element of set are added to the set specified by the
variable name in svar. The return value of the command is empty.
This is like the method include, but for the addition of a whole
set. If the variable named by svar does not exist it will be
created.
::struct::set subtract svar set
All the element of set are removed from the set specified by the
variable name in svar. The return value of the command is empty.
This is like the method exclude, but for the removal of a whole
set.
::struct::set subsetof A B
Returns a boolean value indicating if the set A is a true subset
of or equal to the set B (true), or not (false).
REFERENCES
BUGS, IDEAS, FEEDBACK
This document, and the package it describes, will undoubtedly contain
bugs and other problems. Please report such in the category struct ::
set of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist].
Please also report any ideas for enhancements you may have for either
package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the out-
put of diff -u.
Note further that attachments are strongly preferred over inlined
patches. Attachments can be made by going to the Edit form of the
ticket immediately after its creation, and then using the left-most
button in the secondary navigation bar.
KEYWORDS
cardinality, difference, emptiness, exclusion, inclusion, intersection,
membership, set, symmetric difference, union
CATEGORY
Data structures
COPYRIGHT
Copyright (c) 2004-2008 Andreas Kupries <andreas_kupries@users.sourceforge.net>
tcllib 2.2.3 struct::set(3tcl)