aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/generic/collection.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/generic/collection.clj')
-rw-r--r--src/clojure/contrib/generic/collection.clj116
1 files changed, 0 insertions, 116 deletions
diff --git a/src/clojure/contrib/generic/collection.clj b/src/clojure/contrib/generic/collection.clj
deleted file mode 100644
index c708050b..00000000
--- a/src/clojure/contrib/generic/collection.clj
+++ /dev/null
@@ -1,116 +0,0 @@
-;; Generic interfaces for collection-related functions
-
-;; by Konrad Hinsen
-;; last updated May 5, 2009
-
-;; Copyright (c) Konrad Hinsen, 2009. 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.
-
-(ns
- #^{:author "Konrad Hinsen"
- :doc "Generic arithmetic interface
- This library defines generic versions of common
- collection-related functions as multimethods that can be
- defined for any type."}
- clojure.contrib.generic.collection
- (:refer-clojure :exclude [assoc conj dissoc empty get into seq]))
-
-;
-; assoc
-;
-(defmulti assoc
- "Returns a new collection in which the values corresponding to the
- given keys are updated by the given values. Each type of collection
- can have specific restrictions on the possible keys."
- {:arglists '([coll & key-val-pairs])}
- (fn [coll & items] (type coll)))
-
-(defmethod assoc :default
- [map & key-val-pairs]
- (apply clojure.core/assoc map key-val-pairs))
-
-; assoc-in
-
-;
-; conj
-;
-(defmulti conj
- "Returns a new collection resulting from adding all xs to coll."
- {:arglists '([coll & xs])}
- (fn [coll & xs] (type coll)))
-
-(defmethod conj :default
- [coll & xs]
- (apply clojure.core/conj coll xs))
-
-;
-; diassoc
-;
-(defmulti dissoc
- "Returns a new collection in which the entries corresponding to the
- given keys are removed. Each type of collection can have specific
- restrictions on the possible keys."
- {:arglists '([coll & keys])}
- (fn [coll & keys] (type coll)))
-
-(defmethod dissoc :default
- [map & keys]
- (apply clojure.core/dissoc map keys))
-
-;
-; empty
-;
-(defmulti empty
- "Returns an empty collection of the same kind as the argument"
- {:arglists '([coll])}
- type)
-
-(defmethod empty :default
- [coll]
- (clojure.core/empty coll))
-
-;
-; get
-;
-(defmulti get
- "Returns the element of coll referred to by key. Each type of collection
- can have specific restrictions on the possible keys."
- {:arglists '([coll key] [coll key not-found])}
- (fn [coll & args] (type coll)))
-
-(defmethod get :default
- ([coll key]
- (clojure.core/get coll key))
- ([coll key not-found]
- (clojure.core/get coll key not-found)))
-
-;
-; into
-;
-(defmulti into
- "Returns a new coll consisting of to-coll with all of the items of
- from-coll conjoined."
- {:arglists '([to from])}
- (fn [to from] (type to)))
-
-(declare seq)
-(defmethod into :default
- [to from]
- (reduce conj to (seq from)))
-
-;
-; seq
-;
-(defmulti seq
- "Returns a seq on the object s."
- {:arglists '([s])}
- type)
-
-(defmethod seq :default
- [s]
- (clojure.core/seq s))