TinyScheme is a lightweight Scheme interpreter that implements as large a subset of R5RS as possible without getting very large and complicated. It is meant to be used as an embedded scripting interpreter for other programs. As such, it does not offer IDEs or extensive toolkits although it does sport a small top-level loop, included conditionally. A lot of functionality in TinyScheme is included conditionally, and it allows multiple interpreter states to coexist in the same program without any interference between them. Foreign functions in C can also be added and values can be defined in the Scheme environment.