Либо это странный вопрос, либо вы неправильно его сформулировали ... В вашем примере кода используется y
, поэтому он имеет к нему доступ. Может быть, вы пытаетесь получить только значение y
:
(define (erkan x) (local [(define y 10)] y))
Или, может быть, вы хотите создать своего рода «объектную вещь» - это возможно, но требует более сложного кода. Вот быстрый пример, чтобы показать вам, как это делается (но если вы проходите через HtDP, вам лучше оставить это на потом).
(define (erkan x)
(local [(define y 10)
(define (handler message)
(cond
[(eq? message 'get-x) x]
[(eq? message 'get-y) y]
[(eq? message 'compute) (* x y)]
[else (error "bad message")]))]
handler))
(define some-erkan (erkan 3))
(some-erkan 'get-x)
(some-erkan 'get-y)
(some-erkan 'compute)
(Обратите внимание, что это не правильная Схема, а диалекты преподавания, используемые в HtDP.)