В Scheme какой смысл «установить!»?

Обычно define не разрешается использовать scheme переменную более одного раза. Большинство scheme REPL позволяют это для удобства, когда scheme вы пробуете что-то, но если scheme вы попытаетесь сделать это scheme в программе на схеме, это scheme приведет к ошибке.

Например, в scheme mzscheme программа

#lang scheme
(define x 1)
(define x 2)

выдает scheme ошибку

test.ss:3:8: module: duplicate definition for identifier at: x in: (define-values (x) 2)

Кроме того, define имеет scheme другое значение при использовании scheme внутри других контекстов. Программа

#lang scheme
(define x 1)
x
(let ()
  (define x 2)
  x)
x

имеет scheme вывод

1
2
1

Это связано с тем, что scheme элементы define внутри определенных scheme конструкций фактически обрабатываются scheme как элементы letrec.

scheme

2022-08-20T11:59:55+00:00