clojureで無名関数に複数の引数を渡してみる

無名関数って、複数の引数渡せないかと思ったらそんな事無かった。
途中に引数が多かったり少ない場合なども試してみた。
%1とか%2が第1引数、第2引数に相当する。%&を使うと残りの引数をまとめてリストで受け取れる。

user=> (#(str %) 1)
"1"
user=> (#(str %1) 1)
"1"
user=> (#(str %1 %2) 1 2)
"12"
user=> (#(str %1 %2) 1 2 3)
java.lang.IllegalArgumentException: Wrong number of args passed to: user$eval--613$fn (NO_SOURCE_FILE:0)
user=> (#(str %1 %2) 1)    
java.lang.IllegalArgumentException: Wrong number of args passed to: user$eval--621$fn (NO_SOURCE_FILE:0)
user=> (#(str %1 %2 %&) 1 2 3)
"12(3)"
user=> (#(str %1 %2 %&) 1 2)  
"12"
user=> (#(str %1 %2 %&) 1 2 3 4)
"12(3 4)"
user=> (#(str %1 %2 %&) 1)      
java.lang.IllegalArgumentException: Wrong number of args passed to: user$eval--657$fn (NO_SOURCE_FILE:0)

参考:http://clojure.org/reader#The%20Reader--Macro%20characters