With Racket, you quickly prototype animations and complex GUIs. To organize things, you can mix and match classes, modules or components. Once your script turns into a large collection of modules, equip your Racket modules with explicit type declarations as needed. Racket comes in so many flavors because Racket is much more than a standard scripting language or a plain programming language. Racket supports language extensibility to an unequaled degree. In Racket, creating a new language is as easy as writing a new library.