VL
(defun valid-sequence (sequence)
(let ((stack (make-array 10 :adjustable t :fill-pointer 0
:element-type 'base-char :initial-element #\()))
(and
(every (lambda (p)
(if (member p '(#\( #\{ #\[))
(vector-push-extend p stack)
(and (/= 0 (length stack))
(char= (ecase (vector-pop stack)
(#\( #\))
(#\[ #\])
(#\{ #\}))
p))))
sequence)
(= 0 (length stack)))))
кто сможет короче но так чтоб все еще читаемо