[parenscript-devel] question about dolist
Canhua
dreameration at gmail.com
Mon Sep 5 06:59:39 UTC 2011
thanks. Finally I wrap it inside a lambda.
Is it a good idea for parenscript to automatically wrap LOOPs inside a
lambda when compiling a loop as a expression?
On Mon, Sep 5, 2011 at 11:40 AM, Daniel Gackle <danielgackle at gmail.com> wrote:
> PS is complaining because DOLIST compiles to a FOR loop in JS and FOR
> loops can't be used as expressions, only statements. You might argue
> that this case is a bug, since the DOLIST isn't in the tail position
> of the LET form and so needn't be treated as an expression,
> i.e. perhaps the compiler ought to transform your code into this:
> (let ((x 0))
> (dolist (i '(1 2 3))
> (incf x i))
> (setf v x))
> But for now you have to write the above yourself, or else wrap your
> DOLIST in a lambda (and call that lambda).
> Loops are one of the areas where JS tends to trump the Lispiness of PS.
> Daniel
> On Sun, Sep 4, 2011 at 8:57 PM, Canhua <dreameration at gmail.com> wrote:
>>
>> hi, I found that the following compiles to an error, I wonder if this
>> is a bug or there is something I misunderstand.
>> (ps (setf v
>> (let ((x 0))
>> (dolist (i '(1 2 3))
>> (incf x i))
>> x)))
>> where the error is:
>>
>> The Parenscript form (for
>> (i (#1=_js_arrvar467 '(1 2 3))
>> (#2=_js_idx466 0))
>> ((not (>= #2# #))) ((setf #2# #))
>> (setq i (aref #1# #2#)) (incf x i)) cannot be
>> compiled into an expression.
>> [Condition of type compile-expression-error]
>>
>> Hope you help me, thank you.
>>
>> _______________________________________________
>> parenscript-devel mailing list
>> parenscript-devel at common-lisp.net
>> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>
>
> _______________________________________________
> parenscript-devel mailing list
> parenscript-devel at common-lisp.net
> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>
>
More information about the parenscript-devel
mailing list