Q:

Issues with evaluating expressions from user input

I'm trying to make a recursive definition that reads and execute user expressions, such as (3 + 5). Everything is working, except of one problem with the arithmetic symbol.
I managed to replicate the error in a simpler example:
(define v '(1 + 3))

((cadr v) 2 4)

The (cadr v) is the + symbol, but for some reason the procedure can't be executed on the two arguments that followed. Am I missing something?

A:

I think that's because 
(cadr v)

returns '+ not + (literal + not a + function).
You need to evaluate it before applying it to arguments. 
This should work:
((eval (cadr v)) 2 4)
 ^evaluates the '+ to +

edit
This worked in racket in interactive mode. 
I'm not really sure what's the difference, but made it work in r5rs mode in racket (a script):
#lang r5rs

;required by r5rs
(define user-initial-environment (scheme-report-environment 5))

(define v '(1 + 2))

;eval expects a quoted expression
;(it seems that if it's a function it has to have arguments too)
;and evaluation environment.
((eval (cadr v)  user-initial-environment) 2 4)

