On May 29, 2013, at 3:20 PM, Patrick Li <patrickli.2...@gmail.com> wrote:
> 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?
This is why my solution takes one argument, and does not need named-let*: as
the second argument is computed from the first, there is no reason to pass it
into the loop procedure, as you would not do this when calling a procedure
normally. Passing in a second argument with an unused initial value just
confuses things.
Jim
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users