The code from my previous post is not correct, cons for example
affects metadata:
(def q (bounded-queue 3))
(meta q) -> { :bounded-size 3}
(meta (cons 1 qm)) -> nilOn Feb 17, 3:19 pm, pba <[email protected]> wrote: > Combining the two approaches: > (defn bounded-queue [size] > (with-meta (clojure.lang.PersistentQueue/EMPTY) {:bounded-size > size})) > > then look for (get (meta q) :bounded-size) in the protocol. Nice ... > > Thanks! > > On Feb 17, 11:04 am, Alexandre Patry <[email protected]> > wrote: > > > > > > > > > On 11-02-17 10:33 AM, pba wrote:> Not quite, the queue size needs to be > > passed in at instantiation time > > > for example you may want to have a 10 or 100 element queue depending > > > on the element type. What I'm looking for is to somehow decorate the > > > queue (or some other object) with behavior constraints (a la C++ > > > traits) when the object is created. > > > > Thanks! > > > You can define a record like : > > > (defrecord BoundedQueue [queue size]) > > > where queue is the decorated queue and then consider the size of the > > queue in your protocole extension. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en
