Embedded Logic Programming in Scala
Logic (or relational) programming is perhaps underappreciated compared to its declarative sibling, functional programming. In this talk, we'll examine a relational programming language, miniKanren, embedded in Scala as a DSL. Some problems (layout, scheduling, type inference, logic puzzles) are more clearly expressed as a set of constraints and relations. We'll demonstrate this expressive power by live-coding solutions to a few puzzles and show that we can solve them relationally while still writing what feels like idiomatic, functional Scala. Come listen if you want to witness problem-solving in a programming paradigm that can help us discover solutions to mind-bending puzzles in minutes. As a bonus, these ideas can be re-used for Scala type-level programming.