A domain-specific language, or DSL, is a language that is specialized for one particular area. For example, online issue trackers, such as Jira, often come with a little language for querying, designed to make it easier to perform advanced searches. In programming, we most often see DSLs in the form of an API that has been tailored to make use of the API easier.
Since Kotlin provides many features around the use of functions—named parameters, default parameters, operator overloading, and infix functions, to name a few it makes Kotlin a powerful tool for creating your own custom DSL.
In this section, we will create a custom DSL for assertions. This kind of functionality is often used in testing or behavior-driven development. In fact, we will devote a whole chapter to testing later in this book using the advanced KotlinTest library.