Interpolated strings, like the familiar `s""`, provide a convenient way to embed external DSLs in Scala source, allowing you to construct a new value at runtime from a string literal, with Scala expressions substituted within it. But unless you are prepared to implement the interpolator using a macro, the compiler offers no checks on the correctness or well-formedness of the embedded DSL. Contextual is a small open-source library which does the heavy lifting work to make it trivial to write interpolators to check DSLs which at compile time, without requiring any complicated macro code. An interpolator which parses a DSL when Scalac runs -- with its own custom error messages -- can be written with Contextual in just a few lines of ordinary user code, calling upon parsers, regular expressions or any other means to check the interpolated string and report custom errors at the exact position. This opens up a wealth of possibilities for adding more compile-time safety to Scala code, not least the ability to introduce your own literal-like types, ranging from checked email addresses or URLs to compile-time-parsed URLs, CSS, SQL or even Haskell!
YOU MAY ALSO LIKE:
Writing your own compile-time checks for your favourite embedded DSL!
Jon has been having fun riding the bleeding edge of Scala for over a decade, and he's not finished yet. While he's not travelling the world attending Scala conferences, or organizing Scala World, Jon spends his time working on a variety of open-source Scala libraries, and providing professional Scala training services.