As others have pointed out, the problem is that the list you created contains the plus symbol, not the plus function.
Basically, for the same reason that '(a) returns a two-character list, rather than signaling an uncommitted identifier error; the citation begins the term in “data language”, where legal identifiers are interpreted as symbols, and not as references to variables.
The question, of course, is what you should do with it. Some of them suggested using "eval"; this is probably a bad idea, for the reasons why I think Matthew Flatt elegantly imprinted on his blog post .
Instead, you should probably write a simple mapping function. This is how I will write it. If you use my code in a task, be sure to write to me :).
#lang racket ;; a mapping from symbols to operators (define operator-hash (hash '+ + '- - '* *)) ;; ... and whatever other operators you want. ;; example of using it: (hash-ref operator-hash '+) ;; ==> +
source share