On 23 August 2017 at 03:48, Didier <didi...@gmail.com> wrote:

> I can see it be quick and concise for representing events, but that's also
> exactly the use case example for multi-spec: https://clojure.
> org/guides/spec#_multi_spec
>
> What happens if your event needs more data? Maybe draw needs 2 attributes,
> the card and the deck? Now you have implicit encoding, where what the
> attributes are for the event are defined by its position in the vector.
>

Sometimes it's an advantage to have a deliberately constrained format,
particularly when it comes to storage or indexing. Datomic, for instance,
is effectively an indexed event log of [e a v t] tuples.

If you're in a situation where the event data can and may expand, then use
a map. But I'd argue that there are situations where the scope is limited,
or you want a deliberate and hard constraint on what data is in an event.

Another possible situation is if you're parsing map data incrementally. For
example, a Ring request map could be read in as a series of key/value pairs:

  GET /example HTTP/1.1
  Host: www.example.com

  [:request/method :get]
  [:request/uri "/example"]
  [:request/protocol "HTTP/1.1"]
  [:request/header ["host" "www.example.com"]]

I'm not saying that variants should be favoured over maps in all
situations; just that there are situations where you're certain that you
need key/value pairings.

-- 
James Reeves
booleanknot.com

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to