Proceedings of the 2012 Annual Workshop on Scheme and Functional Programming 2012
DOI: 10.1145/2661103.2661105
|View full text |Cite
|
Sign up to set email alerts
|

miniKanren, live and untagged

Abstract: We 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 show how the interpreters can trivially generate quines (programs that evaluate to themselves). We demonstrate how to transform environmentpassing interpreters written in Scheme into relational interpreters written in miniKanren. We show how constraint extensions to c… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
9
0

Year Published

2017
2017
2023
2023

Publication Types

Select...
5
2

Relationship

1
6

Authors

Journals

citations
Cited by 17 publications
(9 citation statements)
references
References 9 publications
0
9
0
Order By: Relevance
“…• quines, twines, trines -self/co-evaluating program synthesis problems from [7]. The concrete tests took the first 100, 15 and 2 answers for these problems respectively.…”
Section: Type Inference For Stlcmentioning
confidence: 99%
See 2 more Smart Citations
“…• quines, twines, trines -self/co-evaluating program synthesis problems from [7]. The concrete tests took the first 100, 15 and 2 answers for these problems respectively.…”
Section: Type Inference For Stlcmentioning
confidence: 99%
“…Apart from being interesting from a purely theoretical standpoint, this approach may have a practical value: some problems look much simpler when considered as queries to some relational specification [5]. There are a number of appealing examples confirming this observation: a type checker for simply typed lambda calculus (and, at the same time, a type inferencer and solver for the inhabitation problem), an interpreter (capable of generating "quines" -programs producing themselves as a result) [7], list sorting (capable of producing all permutations), etc.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation
“…Interested readers should consult the references, tutorials, and myriad implementations at miniKanren.org for further details. Although Kumar [25] has formally specified miniKanren's syntax and given several semantics, implementers have been encumbered by neither, and none of the more widely used implementations obey these specifications [29,4]. Instead, miniKanren is better described as a family of related logic programming languages, traditionally shallowly embedded in a declarative host language, most of whose semantics are informally specified by direct appeal to their host languages' features.…”
Section: Introductionmentioning
confidence: 99%
“…Instead, this all-moded logic programming technique inspires non-traditional sorts of symbolic computation. Such Kanren programming examples include a typechecker that also behaves as a type inhabiter [28], an automated theorem prover that doubles as a proof assistant [3], and a programminglanguage interpreter that also serves as a quine generator [4]. Many of these miniKanren examples are available in the browser at tca.github.io/veneer/examples/editor.…”
Section: Introductionmentioning
confidence: 99%