Hi to everyone,
I know that may sound a bit mad, but I need this kind of abstraction
to keep my code as aligned as possibile to a legacy one.
I'm the developer of the clj3D library. I want to overload the "+"
function in order to be able to do this:

(+ "a" "b")
;=> "ab"

or this:
(+ [1 2] [3 4])
;=> '(1 2 3 4)

I was thinking to made it through protocols, this is an example:

user> (defprotocol Addable
          (+ [t1 t2]))
Warning: protocol #'user/Addable is overwriting function +
WARNING: + already refers to: #'clojure.core/+ in namespace: user,
being replaced by: #'user/+
Addable
user> (extend-type String
                   Addable
                   (+ [s1 s2] (str s1 s2)))
nil
user> (+ "a" "b")
"ab"

This obviously works but I lose the original "+" function, so (+ 1 2)
will fail.

Is there a way to archive the requested behaviour without compromising
the original "+" and in an idiomatic way?

Best,
Alfredo

-- 
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

Reply via email to