Hi Dean,

On Fri, Dec 09, 2016 at 08:21:54PM +0000, dean wrote:
> #{
> " is atom -- undefined if I wrap,,, prinl Ele " is atom"
>   in yet another set of brackets
>   i.e. it's already inside 4 sets of brackets
>   inside the function lmnu_to_mnu_tbl().
>   The only reason I did the last enclosing brackets was that I wanted to add
>   some additional statements after the print statement
>   so how would you do that i.e. what are the rules
>   'cos at present I just put brackets around what I view as distinct
> operations.
> ....
> (de lmnu_to_mnu_tbl (L Lkey)
>    (for Ele L
>         (
>          if (== (car Ele) Nil)
>          (
>             # " is atom" undefined if I include this last set of brackets
>             #(prinl Ele " is atom")
> #<-------i.e.
>             prinl Ele " is atom"                        #by contrast this
> is fine
>          )
>          (
>             prinl Ele " is list"
>          )
>         )
>    )
> )

Hmm, OK. Where exactly do you want to put brackets, and why?

Do you mean

   (if ...
      ((prinl ...)) ?

Note that this says "obtain the function by evaluating (prinl ...)", because the
CAR (i.e. the expected function) of the expression

   ((prinl ...))

is

   (prinl ...)

which is probably not what you mean.


Is it that you want more than one expression in the true-clause of 'if'? Then
you could use 'prog'

   (if ...
      (prog
         (prinl ...)
         (doSomething) )
      (doSomeThingElse) )


Also, note that

   (== (car Ele) Nil)

is a bit strange. The symbol 'Nil' is not bound, may just by chance be NIL.
Then, comparing with NIL is superfluous. Insted of

   (if (== (car Ele) NIL)

you better write

   (if (not (car Ele))

or optimally

   (ifn (car Ele)

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to