lambda returning lambda

From: Eli Bendersky (eliben_at_gmail.com)
Date: 07/30/04


Date: 30 Jul 2004 04:43:43 -0700

Hi all,

I know I can use a lambda function call as follows:

(funcall #'(lambda (x) (* x 2)) 10)

The following also works (clisp):

((lambda (x) (* x 2)) 10)

However, I want to move one step further. That is:

(((lambda (y) (lambda (x) (* x y))) 10) 2)

But on this I get:
*** - EVAL: ((LAMBDA (Y) (LAMBDA (X) (* X Y))) 10) is not a function
name

This, however, works:

((lambda (y) ((lambda (x) (* y x)) 10)) 2)
What's going on here ?

Thanks in advance !
Eli