Scala is often used in this way to create DSLs, Domain Specific Languages.
Mainly this is because Scala has no operators, and the Scala method calling syntax can be abbreviated. For instance:
5 is an Integer object. To calculate 5 plus 7 you could write
val ans = 5.add(7) except that the addition method is actually named "+" so you would write:
val ans = 5.+(7) but in Scala, you do not need to include the "." in method calls or the parentheses "()" around arguments so to call the + method on the object 5, you would write
val ans = 5 + 7 which works perfectly because Scala has no operators to interfere with your clever method naming scheme. Now extend that idea to your own classes and objects, including the fact that you can "override" methods like + as well as create your own methods named >>> or ::! or @*@ or just plain text names like fancify.