LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Что же в ней ошибочного? Каков по-твоему должен быть результат

Есть разные альтернативы.

1. Значение фиксируется на момент формирования лямбды: тогда (count) ;=> 1 всегда

2. Как static в Си. Тогда

(define count (make-counter))
(count) ; => 1
(count) ; => 2
(define count2 (make-counter))
(count2) ; => 1
(count) ; => 2

3. Как special в CL тогда

(define count (make-counter))
(count) ; => 1
(count) ; => 2
(let ((x 1)) (count)) ;=> 2
(count) ; => 3

Исправление monk, :

Что же в ней ошибочного? Каков по-твоему должен быть результат

Есть разные альтернативы.

1. Значение фиксируется на момент формирования лямбды: тогда (count) ;=> 1 всегда

2. Как static в Си. Тогда (define count (make-counter)) (count) ; => 1 (count) ; => 2 (define count2 (make-counter)) (count2) ; => 1 (count) ; => 2

3. Как special в CL тогда (define count (make-counter)) (count) ; => 1 (count) ; => 2 (let ((x 1)) (count)) ;=> 2 (count) ; => 3

Исходная версия monk, :

Что же в ней ошибочного? Каков по-твоему должен быть результат

Есть разные альтернативы.

1. Значение фиксируется на момент формирования лямбды: тогда (count) ;=> 1 всегда

2. Как static в Си. Тогда

(define count (make-counter))
(count) ; => 1
(count) ; => 2
(define count2 (make-counter))
(count2) ; => 1
(count) ; => 2