Hi,

Am 28.02.2009 um 22:39 schrieb Joshua Fox:

-> confuses me: Does it treat functions with multiple parameters different from functions with one parameter? Am I right that it can only be used with the latter?

(-> a-thing fun-1 (fun-2) (fun-3 b-thing))

is turned into

(fun-3 (fun-2 (fun-1 a-thing)) b-thing)

So, -> takes the first argument and places it as
first argument in the second argument. If the second
argument is not a list, -> creates automatically a list
the given thing as first argument.

So here are the cases.

(-> x foo) => (foo x)
(-> x (foo)) => (foo x)
(-> x (foo a b c)) => (foo x a b c)

This works recursively. So you can easily chain
functions together. One nice example is that of
nested maps as given by James before in this
thread.

(-> the-map :a :b :c)

is turned into

(:c (:b (:a the-map)))

Now consider the-map to be

{:a {:b {:c 5}}}

Then the above evaluates to 5.

A bit contorted, but I hope this helps.

Sincerely
Meikel

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to