Skip to content

Instantly share code, notes, and snippets.

@jneira
Created January 6, 2011 01:56
Show Gist options
  • Save jneira/767386 to your computer and use it in GitHub Desktop.
Save jneira/767386 to your computer and use it in GitHub Desktop.
(ns string-calc)
(defprotocol Adder
(add [self]))
(extend-type java.lang.String
Adder
(add [s]
(apply + (map #(Integer/parseInt %)
(.split s ",")))))
(extend-type java.util.Collection
Adder
(add [s]
(apply + s)))
(extend-type java.util.Map
Adder
(add [s]
(apply + (vals s))))
;;string-calc> (add (doto (new java.util.ArrayList) (.add 1) (.add 2)))
;;3
;;string-calc> (add (doto (new java.util.Vector) (.add 1) (.add 2)))
;;3
;;string-calc> (add "3,4")
;;7
;;string-calc> (add (doto (java.util.HashMap.) (.put "one" 1) (.put "two" 2)))
;;3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment