hello Maxime, On Sat, Aug 27, 2022 at 7:00 PM Maxime Devos wrote: > > On 27-08-2022 18:48, Damien Mattei wrote: > > My ideas is as it is so easy to cheat the compiler > > I don't think it's cheating or abusive. > > from seeing the expressio context why does the compiler restrict this? > expression and defintion context, i'm not sure they are in scheme > standarts, are they really usefull? > why not remove this from Scheme at all? > > I haven't read the RnRS closely, but I doubt that > > (some-procedure (define foo 0) (define bar 0)) > ? i do not understand well the meaning > is allowed by the standard and that it could be meaningful. > in fact just allow 'define that act locally ,see my comment below > Also, even if (begin ...) and (let () ...) where unified, it would be a > shame to lose the ability to only have some definitions temporarily: > > (define foo 0) > > (let ((foo 0)) > whatever-something-using-the-inner-foo) > > something-using-the-outer-foo-again > i do not propose foo to overwrite the global one , just to allow local define that have a local (in the block) range. > If 'let' was replaced by 'begin', then it would have different semantics. > > Greetings, > Maxime. > Regards, Damien