Hi

I don't think there is a reasonable objection to forbid a form like

((returns-something-funcallable arg1 arg2 ... argN) 1 2 3 ... N)

from "working as expected".  As Martin pointed out, if the return value of the form is a "macro" then this would have to be interpreted in the "regular" evaluation regime.

As per "extending" LET there have been a lot of proposals... IMHO a nice one is to go the LOOP way :)

(LETS [var <symbol> <form>]*
      [fun (<name> <arglist> <body>)]*
      [labels (<name> <arglist> <body>)]*
      [values <list> <form>]*
  IN
  <body>)

Of course you can add some ways of extending the syntax by having something like

(def-lets-binding <tag> ...)

You get the idea....

Cheers
--
MA



On May 25, 2011, at 17:51 , Matthew Swank wrote:

Alessio Stalla <alessiostalla@...> writes:


On Wed, May 25, 2011 at 4:45 PM, Matthew Swank
<akopa.gmane.poster@...> wrote:
Pascal Costanza <pc@...> writes:



On 25 May 2011, at 04:51, Matthew D. Swank wrote:

However, consider the following:

((returns-a-function) arg arg ...)

Would it be reasonable to allow this as a legal form as well?

While in principle I like such a thing, I think it doesn't play well
with Lisp-2 (or more specifically, with Common Lisp). If ((whatever)
...) is a valid expression, then one would expect (let ((foo
(whatever))) (foo ...)) to be equivalent, but it's not. And you can't
use flet/labels for the same effect.

Well, let bindings could be extended to use an operator to specify the namespace:

(let (((function foo) (lambda (arg ...) ...))
     (bar  (lambda (arg ...) ...)))
 (foo ...)
 (funcall bar ...))


and flet/labels would transform into a generalized let binding.

This would make the standard transformation of let -> function call a little
problematic, however.

I suppose at the bottom of all this is an implied primitive binding operator for
operators: perhaps flambda!

Matt



_______________________________________________
pro mailing list
pro@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/pro

--
Marco Antoniotti, Associate Professor tel. +39 - 02 64 48 79 01
DISCo, Università Milano Bicocca U14 2043 http://bimib.disco.unimib.it
Viale Sarca 336
I-20126 Milan (MI) ITALY

Please note that I am not checking my Spam-box anymore.
Please do not forward this email without asking me first.