We present two novel implementations of the combinator calculus Nock, in Racket Scheme (Nocksche) and miniKanren (Nocko). “Nock” is the computational model underlying the Urbit project, intended to support practical systems programming in a functional language for the Urbit OS, network protocol, and native applications. The Nock specification was designed with the goals of simplicity and naturality vis-a-vis this use case. We compare the effects of implementing Nock in functional versus declarative style, demonstrate its universality by encoding the SKI calculus, present a quine in Nock, and discuss whether the Nock specification achieves its goals. In particular, because the Nock specification is given in a combination of natural language and pseudocode, we investigate what constraints the Nock spec places on compliant implementations. The translation of Nock-in-the-abstract to Nocksche and Nocko is used to illustrate potential ambiguities and implementation specific decisions that might lead to differences - potentially incompatibilities - across implementations. In the process, the suitability of Racket for concisely implementing combinator calculi is demonstrated.
Sat 7 SepDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
11:00 - 12:30 | |||
11:00 30mTalk | A Teaching Language for Specification Scheme Cameron Moy Northeastern University | ||
11:30 30mTalk | Beyond SICP - Design and Implementation of a Notional Machine for Scheme Scheme File Attached | ||
12:00 30mTalk | Nocksche and Nocko Scheme James Torre None |