How do you let the compiler do the work for you?
Compile Time Logic Programming in Scala
It has been known that Scala's implicits allow one to write Prolog-like programs that run at compile time. Although letting the compiler solve your daily Sudoku puzzle for you is fun, how could that possibly be useful in an actual program?
Taking a step back, as vigilant observers of type safety, we try to leverage the type system to ensure the correctness of our code; but when the domain constraints become too involved, constructing the appropriate types might become cumbersome.
In this talk, after introducing some basic Prolog phrased in the language of implicits, we see how this newfound power can free us from the burden of type construction by letting the compiler do most of the grunt work for us.