[pro] Lisp 2's and function values.

Marco Antoniotti antoniotti.marco at disco.unimib.it
Wed May 25 19:40:35 UTC 2011


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 at ...> writes:
> 
>> 
>> On Wed, May 25, 2011 at 4:45 PM, Matthew Swank
>> <akopa.gmane.poster at ...> wrote:
>>> Pascal Costanza <pc at ...> 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 at 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.





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/pro/attachments/20110525/a969e033/attachment.html>


More information about the pro mailing list