(setf *trans-code*
'(("add" . #'(lambda () (format t "add")))
  ("sub" . #'(lambda () (format t "sub")))
  ("mul" . #'(lambda () (format t "mul")))
  ("xor" . #'(lambda () (format t "xor")))))

(setf x (cdr (assoc "add" *trans-code*
:test #'string=)))

(funcall x)

こうすると"add"と表示されることを期待したのですが,
FUNCALL: #1=#'(LAMBDA NIL (FORMAT T "add")) is not a function name; try using a symbol instead
[Condition of type SIMPLE-TYPE-ERROR]
となってしまいます.これは何がおかしいのでしょうか?