2014/09/09 by Herman Geuvers, Wouter Geraedts, Bram Geron +1
Computer Science · #Algebra over a field #Calculus (dental) #Continuation #Formal Methods in Verification #Function (biology) #Lambda calculus #Logic, Reasoning, and Knowledge #Logic, programming, and type systems #Negation #Simple (philosophy) #Term (time) #Translation (biology) #Type (biology) #cs.LO #cs.PL
paper · pdf · doi:10.4204/eptcs.164.1
published as EPTCS 164, 2014, pp. 1-17 · In Proceedings CL&C 2014, arXiv:1409.2593
openalex publication_date 2014/09/09 · arxiv created 2014/09/11 · arxiv updated 2014/09/12 · openalex created_date 2016/06/24 · openalex updated_date 2026/08/05
Continuation Calculus (CC), introduced by Geron and Geuvers, is a simple foundational model for functional computation. It is closely related to lambda calculus and term rewriting, but it has no variable binding and no pattern matching. It is Turing complete and evaluation is deterministic. Notions like "call-by-value" and "call-by-name" computation are available by choosing appropriate function definitions: e.g. there is a call-by-value and a call-by-name addition function. In the present paper we extend CC with types, to be able to define data types in a canonical way, and functions over these data types, defined by iteration. Data type definitions follow the so-called "Scott encoding" of data, as opposed to the more familiar "Church encoding". The iteration scheme comes in two flavors: a call-by-value and a call-by-name iteration scheme. The call-by-value variant is a double negation variant of call-by-name iteration. The double negation translation allows to move between call-by-name and call-by-value.