Writing a simple interpreter can be a lot of fun.
Start with a calculator that does arithmetic.
Add variablesCode:(+ 2 3)
ConditionsCode:(let (a 5) (+ a 5))
FunctionsCode:(if (x > 5) (+ x 1) (- x 1) )
Recursion?Code:(define foo (n) (+ n 1)) (foo 5)
Congratulations, you have your own Turing complete programming language!Code:(define sum (n) (if (= n 0) (0) (+ n (sum (- n 1)))))
(Also, you are one simple trick away from LISP.)