Traditional practice has been to standardize on a single general-purpose programming language for large software projects (e.g. Java, C++). More recently though, DSLs have been seen as a way to program in a language tailored exactly to the needs of various parts of an application. The new criterion for choosing a language may be not what it can /do/, but what kinds of languages it can /support/. Using miniKanren as an example, we survey the more that 40 hosts that have “Kanren” implementations, and demonstrate what separates an adequate host from a great one.
Daniel P. Friedman is Professor of Computer Science at Indiana University. He is co-author of The Little Schemer, The Seasoned Schemer, The Reasoned Schemer, Scheme and the Art of Programming, and Essentials of Programming Languages, 3rd Edition, all published by MIT press.
Jason Hemann is a fifth-year doctoral student at Indiana University specializing in programming languages. His interests include functional and constraint-logic programming. He is currently an Associate Instructor for the Programming Languages course at Indiana University.