Trabalho com conjuntos em Clojure

Para começar com um exemplo, vamos modelar parte de um aplicativo de bate-papo usando os conjuntos de Clojure.

Digamos, em nosso aplicativo de Chat, que existe uma lista de pessoas que estão online.

Se dermos uma olhada – nosso aplicativo de bate-papo atualmente tem três pessoas online:

#{"Jane" "Joe" "Janice"}

Se quiséssemos adicionar Peter, que acabou de ficar online, poderíamos fazer o seguinte:

(conj #{"Jane" "Joe" "Janice"} "Peter")
;; => #{"Joe" "Peter" "Jane" "Janice"}

A função conj retorna uma nova coleção com “peter” adicionado.

Se, entretanto, Joe ficasse offline, poderíamos fazer isto:


(disj #{"Joe" "Peter" "Jane" "Janice"} "Joe")
;; => #{"Peter" "Jane" "Janice"}

A função disj retorna um novo conjunto que não contém “Joe”.

Digamos que você queira ver quantas pessoas estão online, você pode fazer o seguinte:

(count #{"Peter" "Jane" "Janice"})
;; => 3

Você pode verificar se Joe está, de fato, offline:


(contains? #{"Peter" "Jane" "Janice"} "Joe")
;; => false

Da mesma forma, você pode verificar se Janice ainda está, de fato, online:


(contains? #{"Peter" "Jane" "Janice"} "Janice")
;; => true

Pegue a essência aqui , coloque-a em seu REPL e jogue.