Writing code against an abstraction rather than against a concrete
implementation is especially useful in ClojureScript, since the APIs can
vary from browser to browser.

e

On Thu, Mar 26, 2015 at 8:27 AM, Thomas Heller <[email protected]> wrote:

> The general advice is to use Protocols if you need more than one
> implementation of a function (ie. different targets). If there is only one,
> use a function.
>
> I found myself always starting with a simple function and eventually
> refactor to a protocol if needed (which is quite rare). It is generally
> good practice to write functions in a way that take their "state" as the
> first argument, which would also be the object the protocol would dispatch
> on. So even if you switch to protocols the code using the function does not
> need to change, if you treat the "state" in a somewhat opaque way.
>
> Hope that made sense.
>
> /thomas
>
> On Thursday, March 26, 2015 at 4:18:26 AM UTC+1, Michael McLellan wrote:
> > I've recently been reading a lot about core.async and the different ways
> it can be useful for building interactive/reactive interfaces. I was
> reading through David Nolen's blog (
> http://swannodette.github.io/2013/08/17/comparative/) and the
> corresponding code (
> https://github.com/swannodette/swannodette.github.com/blob/master/code/blog/src/blog/autocomplete/core.cljs)
> and was confused by the of protocols here when setting up the DOM
> modification functions. To me it seems like they could just be helper
> functions, but I'm likely missing something. What is the advantage of
> defining the protocols and extending the existing types?
> >
> > For a simple example of what I mean, I made a gist:
> > https://gist.github.com/jmmk/54857dd919cb7ff70086
> >
> > One has simple functions hide! and show! that modify an element, and the
> other defines the protocol and extends the HTMLElement to include -hide!
> and -show!. What are the tradeoffs here?
>
> --
> Note that posts from new members are moderated - please be patient with
> your first post.
> ---
> You received this message because you are subscribed to the Google Groups
> "ClojureScript" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/clojurescript.
>

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to