Working with sets in Clojure
To jump in with an example, lets model part of a chat application using Clojure's sets.
Lets say, in our Chat app, that there is a list of people who are online.
If we take a look - our Chat app currently has three people online:
#{"Jane" "Joe" "Janice"}
If we wanted to add Peter, who just came online, we could do the following:
(conj #{"Jane" "Joe" "Janice"} "Peter")
;; => #{"Joe" "Peter" "Jane" "Janice"}
The conj function returns a new collection with "peter" added.
If, in the meantime, Joe went offline we could do this:
(disj #{"Joe" "Peter" "Jane" "Janice"} "Joe")
;; => #{"Peter" "Jane" "Janice"}
The disj function returns a new set that does not contain "Joe".
Say you wanted to see how many people where online, you could do the following:
(count #{"Peter" "Jane" "Janice"})
;; => 3
You could double check to make sure that Joe is, in fact, offline:
(contains? #{"Peter" "Jane" "Janice"} "Joe")
;; => false
Likewise you could check that Janice is still, indeed, online:
(contains? #{"Peter" "Jane" "Janice"} "Janice")
;; => true
Grab the gist here, stick it in your REPL and play.
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Clojure
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#