Maybe something along these lines:

(def ^{:private true} EMPTY (reify))

(defn get-with-empty-check [map key]
  (get map key EMPTY))

(defn key-exists? [value]
  (not= EMPTY value))

=> (def res (get-with-empty-check {:asdf 1} :ss))
EMPTY
=> (key-exists? res)
false


The basic idea being that it's guaranteed nothing will ever equal EMPTY
other than itself, making it easy to determine if a key is missing.

Ambrose

On Sun, Mar 20, 2011 at 7:22 PM, Andreas Kostler <
andreas.koestler.le...@gmail.com> wrote:

> Hi Ambrose,
> No java interop. I do a selection based on map keys. Suppose I have a set
> of maps:
> (def rel #{{:a "a" :b "b"}{:a "c" :b "d"}{:a "e" :b "f"}})
> And I do a select-like query
> (select rel [[:a :eq "a"]])
> => #{{:a "a" :b "b"}}
>
> Now, I want to distinguish between a value that doesn't match and a
> non-existing key.
> Hence,
> (select rel [[:bogus "b"]]) should not return an empty set but somehow
> signal that the key does not exist.
> In relational terms, the key is not an attribute of the relation.
> Does that make sense?
> Andreas
>
> On 20/03/2011, at 9:10 PM, Ambrose Bonnaire-Sergeant wrote:
>
> > curious, why do you want to do this? Are you working with Java interop
>
>
> --
> 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
>

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