Let's say I have a set of functions that take no arguments, e.g.
(defn f1 [] 1)
(defn f2 [] 2)
(defn f3 [] 3)
I then make a list out of these functions:
(list f1 f2 f3)
But how do I run the function returned by something like
(first (list f1 f2 f3))?
In Common Lisp I might use funcall since f1 takes no arguments. In Clojure I've tried
(apply (first (list f1 f2 f3)) ()), i.e. apply to an empty argument list,
and this works, I indeed get 1.
But is there a better way to do this? i.e. is there a funcall equivalent in Clojure? (Is that even the right question to ask?)