In this episode I talk with William Byrd. We talk about miniKanren and the differences between functional, logic and relational programming. We also cover the idea of thinking at higher levels of abstractions, and comparisons of relational programming to topics such as SQL, property testing, and code contracts.
Our Guest, William Byrd
http://webyrd.net/
http://github.com/webyrd
@webyrd on Twitter and [email protected]
Topics
U Combinator Lab
miniKanren
Will’s overview of how he got into LISP and Relational Programming
Daniel Friedman and Indiana University
Logic Programming
Zebra Puzzle – Who owns the Zebra?
Oleg Kiselyov
The Reasoned Schemer
Purely Relational Arithmetic System
The Ability to Reorder Statements and Keep the Same Semantics
Functional vs Logic vs Relational
core.logic
Interview of Will on InfoQ
How Far Can We Get Being Purely Declarative
Constraint Logic Programming
Bob Harpers’ Post on Static vs Dynamic Typing
Analogies Between Typing and Logic Programming
Dependent Type Systems, e.g. Agda and Idris
The Discovery of Functional Programming and Signs of Logic Programming
Functional JavaScript by Fogus – (Note: There was Episode with Fogus on Functional JavaScript)
Trying to Understand the Implementation of miniKanren to Understand Thinking Operationally
The ability to be able to let go of implementation details and think at a more abstract level
Pointers on Where to Dig Into Relational Programming
miniKanren.org – For all things miniKanren
Will’s Dissertation
Scheme Workshop Paper
Will is Working on a Book as Starting Place for Relational Programming
The Art of Prolog
Prolog Programming for Artificial Intelligence by Ivan Bratko
Thanks to Everyone Who Has Worked on miniKanren
Clojure/Conj and Strangeloop talks on miniKanren
A giant Thank You to David Belcher for the logo design.