; Конечный автомат, описывающий дверь
(let ((state 'zaperto))
(defun fsm (input)
(case state
((zaperto)
(cond ((eql input 'otopri)
(setf state 'zakrito))))
((zakrito)
(case input
((otkroi) (setf state 'otkrito))
((zapri) (setf state 'zaperto))))
((otkrito)
(case input
((zakroi) (setf state 'zakrito))
((zapri) (setf state 'zaperto)))))))
; Конечный автомат, описывающий дверь
(let ((state 'zaperto))
(defun fsm (input)
(case state
((zaperto)
(cond ((eql input 'otopri)
(setf state 'zakrito))))
((zakrito)
(case input
((otkroi) (setf state 'otkrito))
((zapri) (setf state 'zaperto))))
((otkrito)
(case input
((zakroi) (setf state 'zakrito))
((zapri) (setf state 'zaperto)))))))
Не подумайте, что Лисп какой-то ущербный язык, нет, но библиотека для написания ботов может его очень продвинуть.