Do any lisps support nested s-expression on their head? For example
((f 2) 3 4)
for which (f 2)
presumably evaluates to a fun
Lisp-1 lisps, such as Scheme, usually have all expressions of a function form evaluated, even the function itself.
Lisp-2 lisps, such as Common Lisp, usually have different behaviour for the function and for the arguments. Whereas the arguments are evaluated, the function is looked up. The common way to invoke an evaluated function is to use funcall
or apply
.
(funcall (f 2) 3 4)
In Common Lisp, you can use a lambda form, if you insist on evaluating something to a function in the operator:
((lambda (&rest args) (apply (f 2) args)) 3 4)