Move parameter in Clojure function
clojure
Solution
You don't need to move the a parameter to the outside, you can just use the same technique you used to create the filtering function, that is, with `fn`:
(fn [string]
(apply str
(filter
(fn [foo] (some #(= % foo) (map char (range 65 91))))
string)))
As an example of this, the following two statements are the same:
(+ 1 2 3)
((fn [n] (+ 1 2 n)) 3)
However, to actually answer your question, you could use `comp` ("compose") and `partial` to move the parameter to allow eta conversion (that is the technical name for the last part of the manipulation you are attempting to do):
(comp (partial apply str)
(partial filter (fn [foo] (some #(= % foo)
(map char (range 65 91))))))
This expression is now a function that takes a string, filters the capital letters and then converts it back to a string (notices that `comp` applies functions from right to left).
(NB, that last expression probably isn't very idiomatic Clojure; the first method, or one of the suggestions of others, is better.)
Problem
I'm working on 4clojure problem 29 : "Get the Caps" ``` (= (__ "HeLlO, WoRlD!") "HLOWRD") ``` I've written a solution in the REPL: ``` user=> (apply str (filter (fn [foo] (some #(= % foo) (map char (range 65 91)))) "AbC")) "AC" ``` But as you can see my parameter "AbC" is nested two parentheses in. How would I move my parameter to the outside so I can use it in the 4clojure test? Have I approached the problem in the wrong way?