A Relational Interpreter For Synthesizing JavaScript
summary
A miniKanren system combines a relational parser that maps S-expression JavaScript to LambdaJS and a relational interpreter that runs LambdaJS to synthesize imperative JS programs; it synthesizes multiple solutions (demo returns five variants, e.g. exploiting var hoisting to produce undefined) but has slow/failed cases (some benchmarks take ~5 minutes, many never finish). Three surprises: the parser supplies most constraints, interpreter clause ordering hardly matters, and the parser+interpreter composition is not refutationally complete so unsynthesizable queries may never terminate.
AI-written summary · about
chapters (8)
- 0:00Start
- 0:14Summary
- 3:35Relational Interpreter Design
- 4:46S-exp JavaScript VS LambdaJS
- 9:15Output value and store
- 10:40Lesson one
- 11:21Why did it happen?
- 11:46Lesson Two
related talks
30mRelational Reactive Programming: miniKanren for the Web
19mThe JavaScript Interpreter, Interpreted
31mJavaScript Compilers For Fun and Profit
01h 12mSICP JS: Ketchup on Caviar?
26mMake Your Own Programming Language!
26mLet's compose JavaScript and Reason
13mBrewing JavaScript: Compile your own domain-specific language to JavaScript
46mEmbracing Collaboration with JRuby and JavaScript
