Помогите понять, в чем я неправ и где надо исправить, чтоб 
заработало :) Значит, имеется следующий код, работающий правильно 
в CLISP, но не работающий в ELisp по неизвестной мне причине:
;; нужно сделать closure, чтоб бегала по "кольцевому" списку
;; и выдавала текущее значение
(defun circulate-list-func (loop-list &optional first-elem)
  (let ((curr (if (member first-elem loop-list) 
		  first-elem
		(first loop-list))))
    (values (lambda ()
	       (let ((next (second (member curr loop-list))))
		 (setq curr (if (null next) 
				(first loop-list) 
			      next))))
	    (lambda () curr))))
;; проверяем функцию
(multiple-value-bind (l1 l2) 
    (circulate-list-func '("russian-computer" "ukrainian-computer")) 
  (print (funcall l2)) 
  (print (funcall l1)) 
  (print (funcall l1)) 
  (print (funcall l1)) 
  (print (funcall l2)))
=====
Вот тут и происходит затык -- ELisp пишет, что символ curr не 
является переменной (а CLISP хавает нормально!) :( пробовал curr 
в defvar'е объявить перед функцией -- не помогает :(
Заранее спасибо за ответы :) 
    
      Ответ на:
      
          комментарий
        от amm 
  
    
      Ответ на:
      
          комментарий
        от uj2 
  
    
      Ответ на:
      
          комментарий
        от uj2 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум Отличия EmacsLisp и CommonLisp (2007)
 - Форум elisp (2011)
 - Форум [common lisp][ищу морфизм] ещё одна годная задачка про списки (2010)
 - Форум Выясняем с помощью Emacs, какой ЯП лучше (2024)
 - Форум Разбор кода на McCLIM (2020)
 
- Форум сделал неработоспособную конфигурацию Emacs (2017)
 - Форум Emacs-starter-kit (2013)
 - Форум closure (2005)
 - Форум slime Coonection part (2023)
 - Форум elisp (2009)