In my experience, many people will miss the significance of this, or will simply fail to grasp how this is implementing a programming language at all. After all, you're taking advantage of the host language for every single aspect of the new language, even tokenizing/parsing.<p>More interesting for beginners (in my opinion) are examples implementing a simple tokenizer, parser, and compiler to another source language. This seems to be what closes the gap between programming languages as mystical constructs and programming languages as programs themselves.<p>This point of view does tend to displease the traditional SICP crowd though :-).
C'mon, why stop there? Implement Scheme in your toy lambda. Then implement another toy lambda in your Scheme, and a Scheme in that. Continue until it takes several minutes to do (fib 5). Then, write JIT compiler for that Scheme. See what it takes to get down to pre-Inception levels of performance.<p>Now, you've actually learned something: Abstractions are costly.
Here is something from my todo list, build lisp in C:
<a href="http://www.buildyourownlisp.com/" rel="nofollow">http://www.buildyourownlisp.com/</a>