aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/set.clj
blob: 75c000184959ff99e65626552bc53a4e680a24c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
;;  Copyright (c) Jason Wolfe. All rights reserved.  The use and
;;  distribution terms for this software are covered by the Eclipse Public
;;  License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
;;  be found in the file epl-v10.html at the root of this distribution.  By
;;  using this software in any fashion, you are agreeing to be bound by the
;;  terms of this license.  You must not remove this notice, or any other,
;;  from this software.
;;
;;  set.clj
;;
;;  Clojure functions for operating on sets (supplemental to clojure.set)
;;
;;  jason at w01fe dot com
;;  Created 2 Feb 2009

(ns 
  #^{:author "Jason Wolfe",
     :doc "Clojure functions for operating on sets (supplemental to clojure.set)"}
  clojure.contrib.set)

(defn subset? 
  "Is set1 a subset of set2?"
  [set1 set2]
  {:tag Boolean}
  (and (<= (count set1) (count set2))
       (every? set2 set1)))

(defn superset? 
  "Is set1 a superset of set2?"
  [set1 set2]
  {:tag Boolean}
  (and (>= (count set1) (count set2))
       (every? set1 set2)))

(defn proper-subset? 
  "Is s1 a proper subset of s2?"
  [set1 set2]
  {:tag Boolean}
  (and (< (count set1) (count set2))
       (every? set2 set1)))

(defn proper-superset? 
  "Is s1 a proper superset of s2?"
  [set1 set2]
  {:tag Boolean}
  (and (> (count set1) (count set2))
       (every? set1 set2)))