code = "(def x 3) " ++
       "(def l '(1 2 3)) " ++
       "(def do (fn (arg & args) (if args (do args) arg))) " ++ 
       "(def defn (macro (id args & body) " ++
                    "'(def ~id ~(cons 'fn (cons args body))))) " ++
       "(defn map (f c) " ++
         "(if c " ++
           "(cons (f (first c)) (map f (rest c))) " ++
           "c)) " ++
       "(print map) " ++
       "(defn reduce (f i c) " ++
         "(if c " ++
           "(reduce f (f i (first c)) (rest c)) " ++
           "i)) " ++
       "(print (map (fn (x) (+ 1 x)) l)) " ++
       "(print (reduce (fn (x y) (+ x y)) 0 l)) " ++
       "(let (a (fn (d e) (+ d e))) (+ x (a 1 2)))"
code = "(def x 3) " ++
       "(def l '(1 2 3)) " ++
       "(def do (fn (arg & args) (if args (do args) arg))) " ++ 
       "(def defn (macro (id args & body) " ++
                    "'(def ~id ~(cons 'fn (cons args body))))) " ++
       "(defn map (f c) " ++
         "(if c " ++
           "(cons (f (first c)) (map f (rest c))) " ++
           "c)) " ++
       "(print map) " ++
       "(defn reduce (f i c) " ++
         "(if c " ++
           "(reduce f (f i (first c)) (rest c)) " ++
           "i)) " ++
       "(print (map (fn (x) (+ 1 x)) l)) " ++
       "(print (reduce (fn (x y) (+ x y)) 0 l)) " ++
       "(let (a (fn (d e) (+ d e))) (+ x (a 1 2)))"
code = "(def x 3) " ++
       "(def l '(1 2 3)) " ++
       "(def do (fn (arg & args) (if args (do args) arg))) " ++ 
       "(def defn (macro (id args & body) " ++
                    "'(def ~id ~(cons 'fn (cons args body))))) " ++
       "(defn map (f c) " ++
         "(if c " ++
           "(cons (f (first c)) (map f (rest c))) " ++
           "c)) " ++
       "(print map) " ++
       "(defn reduce (f i c) " ++
         "(if c " ++
           "(reduce f (f i (first c)) (rest c)) " ++
           "i)) " ++
       "(print (map (fn (x) (+ 1 x)) l)) " ++
       "(print (reduce (fn (x y) (+ x y)) 0 l)) " ++
       "(let (a (fn (d e) (+ d e))) (+ x (a 1 2)))"