You need to use ,optimize. -- Linus Björnstam
On Sun, 6 Feb 2022, at 10:27, to...@tuxteam.de wrote: > On Sun, Feb 06, 2022 at 07:44:31AM +0100, Linus Björnstam wrote: >> >> On Sat, 5 Feb 2022, at 18:31, Stefan Israelsson Tampe wrote: >> > Hmm this was wrong, I mean >> > >> > For conditional variables we have a default begin. So then why on earth >> > do you not have an implicit let?, Just laziness? >> > There should be a good reason or? this is a pretty fundamental change >> > that I support but then we should not be lazy not trying to understand >> > the design choices of the old beards. >> >> In other languages let starts a new lexical context which can be expensive. >> I don't know guile internals but a let without any defines is trivially >> converted to a begin by the optimizer. > > It seems that in Guile 3 the expander is smart enough for an empty > bindings list in let: > > | tomas@trotzki:~$ guile > | GNU Guile 3.0.7.6-22120 > | Copyright (C) 1995-2021 Free Software Foundation, Inc. > > [...] > > | scheme@(guile-user)> ,expand (let () (message #t "Yikes")) > | $1 = (message #t "Yikes") > | scheme@(guile-user)> ,expand (let ((x 3)) (message #t "Yikes ~S" x)) > | $2 = (let ((x 3)) (message #t "Yikes ~S" x)) > > ...but doesn't "see" whether bindings are actually used (quite possibly > those go away in a later optimisation phase, though): > > | scheme@(guile-user)> ,expand (let ((x 3)) (message #t "Yikes")) > | $3 = (let ((x 3)) (message #t "Yikes")) > > Cheers > -- > t > > Attachments: > * signature.asc