(defpackage commands)

(defun commands::test ()
  (print 'test))

(defun commands::lalka ()
  (princ "lalka"))

(defun main (&optional (package 'commands))
  (loop :with package := (find-package package)
        :for cmd := (read-line *standard-input* nil) :while cmd
        :do (handler-case (funcall (intern (string-upcase cmd) package))
              (undefined-function ()
                (format t "~&Command `~a' doesn't exists~%" cmd)))))

(main)