Я работаю над проектом для программы, которая принимает регулярные выражения, превращает их в соответствующий NFA, а затем позволяет проверить, приняты или нет определенные входные строки NFA.
I ' m используя функцию gensym
для генерации чисел, соответствующих состояниям NFA, только я хотел бы взять только ее часть с цифрой c, используя *gensym-counter*
, все работало нормально, но внезапно я столкнулся эта странная проблема:
Функция, которую я использую для вызова gensym
, это
(defun gensympp ()
(let ((x (gensym)))
*gensym-counter*))
, поэтому она возвращает только увеличенное число после вызова gensym на x
, поэтому я могу использовать ее для NFA заявляет, что сегодня я проводил несколько финальных тестов, и внезапно функция больше не увеличивает *gensym-counter*
, поэтому каждое состояние - это только начальный номер (задается с помощью let в начале функции), единственный способ исправить похоже, в начале кода ставится (defparameter x 1)
(число не имеет значения), при этом gensym обновляется нормально, и все работает нормально, как b поэтому я действительно понятия не имею, что могло вызвать это, потому что я только внес небольшие коррективы в форматирование кода, который прекрасно работал неделю * go, я тоже новичок в lisp, так что может быть что-то очевидное, я игнорирую, если нужно, я могу опубликовать оставшуюся часть кода, где я использую gensym, но даже сам вызов функции (gensympp)
из слушателя не увеличивает число
Большое спасибо заранее за помощь