Tuesday, 27 January 2009
Passing Parameters in Clojure
Clojure has support for a number of ways of passing parameters. A function body can have multiple function bodies associated with it, each with different arity. This isn't any where near as general as Haskell's pattern matching (see [1]).
Similarly, you can make a var arg function with the
The last option for parameter passing is keywords, the parameter list becomes a map. This is discussed in more detail here.
user> (defn foo ([x] x) ([x y] (+ x y)) ([x y z] (+ x y z)))
#'user/foo
user> (foo 1)
1
user> (foo 1 2)
3
user> (foo 1 2 3)
6
Similarly, you can make a var arg function with the
&
notation.
user> (defn bar ([x] x) ([x & rest-args] (reduce + (cons x rest-args))))
#'user/bar
user> (bar 1)
1
user> (bar 1 2 3 4 5 6 7)
28
The last option for parameter passing is keywords, the parameter list becomes a map. This is discussed in more detail here.
Labels: clojure
Subscribe to Posts [Atom]