Damien Mattei schreef op wo 22-09-2021 om 09:52 [+0200]: > i do not understand well what you want to mean with those example. > For me define-once does not seems to be a solution, it act as define too > much > ,does not set! variable if already exist and can not use to set it again > because, > as define it is forbidden twice in the same block for the same variable: > [...]
I was not suggesting using define-once.
Rather, I was demonstrating how to get Python-style scoping of variables local
to
a function (procedure) in Scheme without defining new syntax, by using set!
instead
of define, and adding a define in the beginning of the procedure for every
variable.
Python:
def hello(language):
if language == "english":
message = "Hello world!"
if language == "dutch":
message = "Hallo wereld!"
print(message)
hello("english") # output: Hello world!
hello("dutch") # output: Hallo wereld!
Equivalent (non-idomatic but portable) Scheme:
(define (hello language)
(define message)
(cond ((equal? language "english")
(set! message "Hello world!"))
((equal? language "dutch")
(set! message "Hallo wereld!")))
(display message)
(newline))
(hello "english") ; "Hello world!"
(hello "dutch") ; "Hallo wereld!"
Greetings,
Maxime.
signature.asc
Description: This is a digitally signed message part
