Newsgroups: comp.lang.lisp
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!news.mathworks.com!uhog.mit.edu!bloom-beacon.mit.edu!gatech!swrinde!pipex!sunsite.doc.ic.ac.uk!uknet!festival!edcogsci!jeff
From: jeff@aiai.ed.ac.uk (Jeff Dalton)
Subject: Re: letbind (Was: Re: SETQ is to SET as LET is to ???)
Message-ID: <Czoq6D.MB1@cogsci.ed.ac.uk>
Sender: usenet@cogsci.ed.ac.uk (C News Software)
Nntp-Posting-Host: bute-alter.aiai.ed.ac.uk
Organization: AIAI, University of Edinburgh, Scotland
References: <3adus3$44q@nz12.rz.uni-karlsruhe.de> <3ae8as$p13@peaches.cs.utexas.edu> <MARCOXA.94Nov17110451@mosaic.nyu.edu>
Date: Tue, 22 Nov 1994 19:59:00 GMT
Lines: 28

In article <MARCOXA.94Nov17110451@mosaic.nyu.edu> marcoxa@cs.nyu.edu writes:

>I was intrigued by the Dylan 'bind' machinery and wrote a (actually
>two) small macros that do the following
>
>    (letbind {<let-style-binding> |
>              <multiple-value-binding> |
>              <destructuring-bind-binding>}*
>       <body>)
>
>(of course I have a 'letbind*')

Dylan also allows LETs to be mixed in w/ other forms.  So how about

  (begin
    (let a 1)
    ... stuff w/ a ...
    (let (b c) :values (f))         ; multiple values
    ... stuff w/ a,b,c ...
    (let (d &rest e) :struct (g))   ; destructuring
    ... stuff w/ a,b,c,d,e ...)
   
This can be defined straightforwardly, using letbind in the expansion.

"Begin" was chosed just because it's a random free term that suggests
something like a block.

-- jeff
