(defmacro alet (form &body body) `(let ((it ,form)) ,@body))
(defmacro aand (x &rest rest) `(alet ,x (and it ,@rest)))

(defun make-anton-solver (string &aux (arg (gensym)))
  `(lambda (,arg)
     (declare (simple-string ,arg)
              (optimize speed (safety 0)))
     (alet -1
       ,(reduce (lambda (x z)
                  `(aand (position ,x ,arg :start (1+ it)) ,z))
                string :initial-value t :from-end t))))

(alet (make-anton-solver "anton")
  (format t "~(~s~)~%~%" it)
  (disassemble (compile nil it)))