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)) -> nil


On Feb 17, 3:19 pm, pba <apbog...@gmail.com> 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 <patry...@iro.umontreal.ca>
> 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 clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to