Hi Michele,
I realized after posting my version of named-let*, that you actually
*cannot* use it to accomplish all of what you want. For that you do need
loop to be a syntactic extension, as mentioned by Jorg.
For instance, my named-let* macro would not simplify the example you posted
earlier:
(let loop ((i (some-function)) (ch (string-ref buf (some-function))))
(do-something)
(if (some-condition-is-true)
(loop (+ i 1)
(string-ref buf (+ i 1)))))
The key issue underlying this is, when you call (loop), would you like to
call it with one or two arguments?
-Patrick
On Wed, May 29, 2013 at 12:25 PM, Michele La Monaca <
[email protected]> wrote:
> On Wed, May 29, 2013 at 3:53 PM, Patrick Li <[email protected]>
> wrote:
> > If I understand the OP correctly, he wants let* to imitate this macro.
> >
> > (define-syntax named-let*
> > (syntax-rules ()
> > ((named-let* name ((var val) ...)
> > body ...)
> > (let* ((var val) ...)
> > (let name ((var var) ...)
> > body ...)))))
> >
>
> Exactly. Thanks for writing it down.
>
> Ciao,
> Michele
>
_______________________________________________
Chicken-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-users