In this chapter, we are going to cover a different way to derive algorithms, one that takes a highly declarative approach in order to address the problems at hand: logic programming. We'll see this paradigm in action while studying the following recipes:
Querying a social website's data
Designing a type inferencer
Playing a round of checkers