Re: cond clause does not allow definitions

Damien Mattei <[email protected]>
Newsgroups gmane.lisp.guile.user
Message-ID <CADEOaddLEbptwTcFsQQ3Q-3osNw1nyDBD4GW3+Sc-++9i13-+g@mail.gmail.com>
in the version below it seems that else in cond with definition works alone
but not when there is other conditions before:

GNU Guile 3.0.8.99-f3ea8
Copyright (C) 1995-2022 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> (cond (else (define x 7) x))
$1 = 7
scheme@(guile-user)> (cond (#f 'never) (else (define x 7) x))
While compiling expression:
Syntax error:
unknown file:2:24: definition in expression context, where definitions are
not allowed, in form (define x 7)

i understand that because  in my code, that i can not write all here,  i
had  to change:
#`(cond  (#,test (let ()
     #,@L-then))
   (else
      #,@L-else)))

#`(cond  (#,test (let ()
     #,@L-then))
   (else
    (let ()
      #,@L-else))))

add a (let ()  in the else of cond too to encapsulate the possible
definitions in #,@L-else

now i understand that and it is late here...
good night

On Wed, May 22, 2024 at 11:08 PM Pierpaolo Bernardi <[email protected]>
wrote:

> On Wed, May 22, 2024 at 10:08 PM Jeronimo Pellegrini <[email protected]>
> wrote:
>
> > A: (cond (#t (define x 7) x))
> > B: (cond (else (define x 7) x))
> >
> > | system      | A     | B     |
> > |-------------|-------|-------|
> > | Bigloo      | 7     | 7     |
> > | Biwa        | 7     | 7     |
> > | Chez        | error | 7     |
> > | Chibi       | error | 7     |
>
> In chez:
>
> > (cond (else (define x 7) x))
> 7
> > x
> 7
>
> which looks like a bug to me. You may check if x is defined outside of
> the cond expression in the other implementations which do not raise an
> error too?
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.