Actually, I think the problem is using the spec (&or symbolp lambda-expr) instead of [&or symbolp lambda-expr] Because the list construct here always makes "a list with content". So this spec says "a list with one thing in it, either a symbol or a lambda" which would match (gv-define-simple-setter aref (aset)) -- Best regards, Matúš Goljer