LINUX.ORG.RU

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

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

Да, пожалуй использовать макрос push-pl - лучшее решение, спасибо.

Тут одна проблема этого макроса дошла до меня:

(setq pl '())

(defun tt (pl)
  (push-pl pl "g" 2))

(tt pl)

и pl тут будет nil. Так что push-pl ограничен только зоной видимости объявления (setq pl ...). Если нужно выйти за неё, то придётся протаскивать значения pl в функциональном стиле через возвращаемые функциями значения.

Но, если pl будет глобальной переменной, то всё ок должно быть (если не перекрывать её локальной переменной).

P.S. наверно самым простым, в этой ситуации, будет использование (setq pl (list nil nil)). Иначе количество костылей или ограничений будет слишком велико.

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

Да, пожалуй использовать макрос push-pl - лучшее решение, спасибо.

Тут одна проблема этого макроса дошла до меня:

(setq pl '())

(defun tt (pl)
  (push-pl pl "g" 2))

(tt pl)

и pl тут будет nil. Так что push-pl ограничен только зоной видимости объявления (setq pl ...). Если нужно выйти за неё, то придётся протаскивать значения pl в функциональном стиле через возвращаемые функциями значения.

Но, если pl будет глобальной переменной, то всё ок должно быть (если не перекрывать её локальной переменной).

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

Да, пожалуй использовать макрос push-pl - лучшее решение, спасибо.

Тут одна проблема этого макроса дошла до меня:

(setq pl '())

(defun tt (pl)
  (push-pl pl "g" 2))

(tt pl)

и pl тут будет nil. Так что push-pl ограничен только зоной видимости объявления (setq pl ...). Если нужно выйти за неё, то придётся протаскивать значения pl в функциональном стиле через возвращаемые функциями значения.

Но, если pl будет глобальной переменной, то всё ок должно быть.

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

Да, пожалуй использовать макрос push-pl - лучшее решение, спасибо.

Тут одна проблема этого макроса дошла до меня:

(setq pl '())

(defun tt (pl)
  (push-pl pl "g" 2))

(tt pl)

и pl тут будет nil. Так что push-pl ограничен только зоной видимости объявления (setq pl ...). Если нужно выйти за неё, то придётся протаскивать значения pl в функциональном стиле через возвращаемые функциями значения (хотя, если поиграться с квотированием и eval, то, думаю, можно обойти и эту проблему).

Но, если pl будет глобальной переменной, то всё ок должно быть.