Mikera <[email protected]> writes:
> On Wednesday, 11 December 2013 13:37:24 UTC, Philipp Meier wrote:
>> Implementing a clojure protocol will give you fast dispatch on the first
>> argument's type.
>>
>
> Very true... it's a tradeoff:
> - protocols allow open extension (which doesn't appear to be needed here?)
> - instance? checks are even faster (although protocol dispatch is still
> pretty fast)
> - protocols have some other quirks (e.g. not allowing primitive arguments)
>
> In the case we have here (a small fixed number of types, no open dispatch
> required) I think I would prefer instance? checks (especially given a nice
> macro to remove the boilerplate).
Yeah, unfortunately I do need dispatch on primitive arguments, so
protocols fail for me.
I've been trying to get this to work as a macro, but am having problems
with this. The instance? check is easy to do, but adding the type hint
is much harder; I think that the ^macro expands at read time, so before
the macro expands, so it's not possible to construct the type hint.
I've tried to rewrite this with `with-meta' but can't get this to work
either since I think the meta is being added to the value.
My hope was to get something like this...
(defn ^IRI iri
[name]
(with-type-hint
[name [String java.net.URL java.io.File]]
(IRI/create name)))
Am I really the first person to get this problem?
Phil
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.