Lists, vectors, symbols, strings, booleans, and numbers have the advantage of having literal representations while procedures doesn't. One might argue that it would be doable to have literal representation for globals and perhaps even global module bindings since they could be determined at macro expansion time, but since we don't the best way to do what you want is to use quasiquote to evaluate some parts:
`(,+ 1 2 3) ; ==> (#<procedure:+> 1 2 3)
Notice that after evaluating +
there is nothing in this list associated with the symbol +
. Also know that the symbol +
is data and not to be confused with the variable +
.