- Because you've not created anything even remotely for production use
- Because you're getting any/all of the following from a host language
. - garbage collection
. - I/O
. - numbers
. - exception handling
. - containers, objects, strings, regexes, unicode, ...
. - concurrency gizmos
. - even some syntax: is it your own code that scans and converts floating-point tokens?
- Perhaps you just made a parenthetical sugar that just reflects into the host language, with more or less its semantics (yes Lisp read syntax is easy-ish).
- The host language you're using was hacked on by many people over many years who produced tens of thousands of commits; all you have to do is call things in it.
- And/or, possibly:
. - your stuff segfaults when the program has a bug, like (+ "abc" 42).
. - pardon me, that was last week; I see it just quits now
. - you took shortcuts, like there will only be 100,000 conses in a static array.
. - you have not-so-accidental quadratic behavior all over the place.
. - you have almost no documentation about what you made, no test cases, and no significant amount of code.
. - you don't have a compiler.
. - ... that can compile files ahead of time into loadable object files, with fine-grained evaluation control
. - I see you have macro expander, but it has no environment parameter and is oblivious to lexical scopes.
. ...
Implementing a Lisp for real is years of hard work, and many hair-pulling moments.