Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleAugust 2024
Compiled, Extensible, Multi-language DSLs (Functional Pearl)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue ICFPArticle No.: 238, Pages 64–87https://doi.org/10.1145/3674627Implementations of domain-specific languages should offer both extensibility and performance optimizations. With the new syntax-spec metalanguage in Racket, programmers can easily create DSL implementations that are both automatically macro-extensible ...
- research-articleOctober 2023
stableKanren: Integrating Stable Model Semantics with miniKanren
PPDP '23: Proceedings of the 25th International Symposium on Principles and Practice of Declarative ProgrammingArticle No.: 5, Pages 1–13https://doi.org/10.1145/3610612.3610617This paper presents stableKanren, a miniKanren extension with normal logic programming support under stable model semantics. MiniKanren is a relational programming solver implemented atop Scheme via shallow embedding, which means the predicate in each ...
- ArticleAugust 2023
Nearly Macro-free microKanren
AbstractWe describe changes to the microKanren implementation that make it more practical to use in a host language without macros. With some modest runtime features common to most languages, we show how an implementer lacking macros can come closer to ...
- ArticleMay 2022
Scheduling Complexity of Interleaving Search
AbstractminiKanren is a lightweight embedded language for logic and relational programming. Many of its useful features come from a distinctive search strategy, called interleaving search. However, with interleaving search conventional ways of reasoning ...
- research-articleJanuary 2021
Efficient fair conjunction for structurally-recursive relations
PEPM 2021: Proceedings of the 2021 ACM SIGPLAN Workshop on Partial Evaluation and Program ManipulationPages 58–73https://doi.org/10.1145/3441296.3441397We present a new, fair, conjunction evaluation strategy for relational programming language miniKanren. Unlike the original left-biased conjunction, our approach controls the order of conjunct execution based on the intrinsic properties of relation ...
A unified approach to solving seven programming problems (functional pearl)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 1, Issue ICFPArticle No.: 8, Pages 1–26https://doi.org/10.1145/3110252We present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in miniKanren.
- research-articleNovember 2016
A small embedding of logic programming with a simple complete search
DLS 2016: Proceedings of the 12th Symposium on Dynamic LanguagesPages 96–107https://doi.org/10.1145/2989225.2989230We present a straightforward, call-by-value embedding of a small logic programming language with a simple complete search. We construct the entire language in 54 lines of Racket---half of which implement unification. We then layer over it, in 43 lines, ...
Also Published in:
ACM SIGPLAN Notices: Volume 52 Issue 2 - research-articleSeptember 2012
miniKanren, live and untagged: quine generation via relational interpreters (programming pearl)
Scheme '12: Proceedings of the 2012 Annual Workshop on Scheme and Functional ProgrammingPages 8–29https://doi.org/10.1145/2661103.2661105We present relational interpreters for several subsets of Scheme, written in the pure logic programming language miniKanren. We demonstrate these interpreters running "backwards"---that is, generating programs that evaluate to a specified value---and ...