[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

LAMBDA*



CC: (BUG LISPM) at MIT-MC, (BUG LISP) at MIT-MC, NIL at MIT-MC

No, FEXPR's lose utterly -- you couldn't compile

 (LAMBDA (&QUOTE X Y Z)
		 &AUX A) ; You left this var out, I'll assume it was implied
	 (SETQ A (EVAL X) A (EVAL Y) A (EVAL Z))
	 (1+ A))

correctly (or at all) unless your compiler is CONSIDERABLY smarter
than I think it is ... There's no hint of what's getting EVAL'd!

 ((LAMBDA* (A A A) <body>) <arg1> <arg2> <arg3>)

would be the same as ...

 ((LAMBDA (A) ((LAMBDA (A) ((LAMBDA (A) <body>) <arg3>)) <arg2>)) <arg1>)

Then LET* could just turn into a LAMBDA* ... 

I'm not sure if I'm serious or not. I'm also not sure if it matters. I thought
I would throw it out for laughs, comments, or consideration and see if someone
could help me make up my mind ...

If anyone gives this any serious consideration, they'll have to also address
what ((LAMBDA* (A A &OPTIONAL (B 1)) A) (* 0. B)) means ... or even worse
((LAMBDA* (A &OPTIONAL (A A))...) ...) and/or
((LAMBDA* (A &OPTIONAL (A A) &AUX (A A)) ...)...) mean ...

I guess I'm probably not serious ... 
-kmp