LINUX.ORG.RU

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

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

Черт его знает чем это лучше объекта с слотом

эээ... объект со слотом тождественен замыканию.

Я про то, что для сбора списка лучше использовать http://common-lisp.net/project/iterate/doc/ , который расширяем, позволяет обходить последовательности (а не только собирать значения).

Кстати, ещё одно идеологическое отличие CL и Scheme: в Racket очень-очень редко используется with-...

Те же коллекторы делались бы так:

(define new-collector
    (let ([store null])
      (lambda ([map (lambda (x) x)])
       (case-lambda
         [() (reverse store)]
         [(x) (set! store (cons (map x) store))]))))

(let ([col (new-collector)])
  (col 1)
  (col 2)
  (col 3)
  (col)) ; => '(1 2 3)

(let ([col (new-collector (lambda (x) (* 2 x)))])
  (col 1)
  (col 2)
  (col 3)
  (col)) ; => '(2 3 4)

... и писать ради функции на 5 строк целую библиотеку как-то жалко.

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

Черт его знает чем это лучше объекта с слотом

эээ... объект со слотом тождественен замыканию.

Я про то, что для сбора списка лучше использовать http://common-lisp.net/project/iterate/doc/ , который расширяем, позволяет обходить последовательности (а не только собирать значения).

Кстати, ещё одно идеологическое отличие CL и Scheme: в Racket очень-очень редко используется with-...

Те же коллекторы делались бы так:

(define new-collector
    (let ([store null])
      (lambda ([map (lambda (x) x)])
       (case-lambda
         [() (reverse store)]
         [(x) (set! store (cons (map x) store))]))))

(let ([col (new-collector)])
  (col 1)
  (col 2)
  (col 3)
  (col)) ; => '(1 2 3)

(let ([col (new-collector (lambda (x) (* 2 x)))])
  (col 1)
  (col 2)
  (col 3)
  (col)) ; => '(2 3 4)

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

Черт его знает чем это лучше объекта с слотом

эээ... объект со слотом тождественен замыканию.

Я про то, что для сбора списка лучше использовать http://common-lisp.net/project/iterate/doc/ , который расширяем, позволяет обходить последовательности (а не только собирать значения).

Кстати, ещё одно идеологическое отличие CL и Scheme: в Racket очень-очень редко используется with-...

Те же коллекторы делались бы так:

(define new-collector
    (let ([store null])
      (lambda ([map (lambda (x) x)])
       (case-lambda
         [() (reverse store)]
         [(x) (set! store (cons x store))]))))

(let ([col (new-collector)])
  (col 1)
  (col 2)
  (col 3)
  (col)) ; => '(1 2 3)

(let ([col (new-collector (lambda (x) (* 2 x)))])
  (col 1)
  (col 2)
  (col 3)
  (col)) ; => '(2 3 4)