All languages have warts, wats, defects, and things that are just plain bad taste. Unless, of course, it's your language. Usually, implementing and maintaining your own language is a lot of work, but the Racket programming system makes creating a language as easy as having breakfast (almost) and thus a routine activity. Pick and assemble what you like from other languages, sprinkle your own favorite features, and voila - there's your fun experiment, your medium of expression, your educational language, your DSL.
Racket's secret is its flexible syntax (hailing from Lisp), and its world-class macro system which is both super-powerful and easy to learn and use. (Going far beyond classic Lisp.) What's great is that you don't have to do all the work: Languages are just libraries of macros in Racket, and they can seamlessly interoperate with the Racket base language and each other. Don't worry if you dislike parentheses: Racket has you covered there, too.