Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Kevin Millikin is active.

Publication


Featured researches published by Kevin Millikin.


Logical Methods in Computer Science | 2008

A Rational Deconstruction of Landin's SECD Machine with the J Operator

Olivier Danvy; Kevin Millikin

Landins SECD machine was the first abstract machine for applicative ex- pressions, i.e., functional programs. Landins J operator was the first control operator for functional languages, and was specified by an extension of the SECD machine. We present a family of evaluation functions corresponding to this extension of the SECD machine, us- ing a series of elementary transformations (transformation into continuation-passing style (CPS) and defunctionalization, chiefly) and their left inverses (transformation into direct style and refunctionalization). To this end, we modernize the SECD machine into a bisimi- lar one that operates in lockstep with the original one but that (1) does not use a data stack and (2) uses the caller-save rather than the callee-save convention for environments. We also identify that the dump component of the SECD machine is managed in a callee-save way. The caller-save counterpart of the modernized SECD machine precisely corresponds to Thieleckes double-barrelled continuations and to Felleisens encoding of J in terms of call/cc. We then variously characterize the J operator in terms of CPS and in terms of delimited-control operators in the CPS hierarchy. As a byproduct, we also present several reduction semantics for applicative expressions with the J operator, based on Curiens original calculus of explicit substitutions. These reduction semantics mechanically correspond to the modernized versions of the SECD machine and to the best of our knowledge, they provide the first syntactic theories of applicative expressions with the J operator. The present work is concluded by a motivated wish to see Landins name added to the list of co-discoverers of continuations. Methodologically, however, it mainly illustrates the value of Reynoldss defunctionalization and of refunctionalization as well as the expres- sive power of the CPS hierarchy (1) to account for the first control operator and the first abstract machine for functional languages and (2) to connect them to their successors. Our work also illustrates the value of Danvy and Nielsens refocusing technique to con- nect environment-based abstract machines and syntactic theories in the form of reduction semantics for calculi of explicit substitutions.


international symposium on functional and logic programming | 2010

Defunctionalized interpreters for call-by-need evaluation

Olivier Danvy; Kevin Millikin; Johan Munk; Ian Zerny

Starting from the standard call-by-need reduction for the λ-calculus that is common to Ariola, Felleisen, Maraist, Odersky, and Wadler, we inter-derive a series of hygienic semantic artifacts: a reduction-free stateless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for call-by-need evaluation. Furthermore we observe that a data structure and a judgment in this natural semantics are in defunctionalized form. The refunctionalized counterpart of this evaluation function is an extended direct semantics in the sense of Cartwright and Felleisen. Overall, the semantic artifacts presented here are simpler than many other such artifacts that have been independently worked out, and which require ingenuity, skill, and independent soundness proofs on a case-by-case basis. They are also simpler to inter-derive because the inter-derivational tools (e.g., refocusing and defunctionalization) already exist.


Journal of Functional Programming | 2007

On one-pass CPS transformations

Olivier Danvy; Kevin Millikin; Lasse Nielsen

We bridge two distinct approaches to one-pass CPS transformations, i.e, CPS transformations that reduce administrative redexes at transformation time instead of in a post-processing phase. One approach is compositional and higher-order, and is independently due to Appel, Danvy and Filinski, and Wand, building on Plotkins seminal work. The other is non-compositional and based on a reduction semantics for the lambda-calculus, and is due to Sabry and Felleisen. To relate the two approaches, we use three tools: Reynoldss defunctionalization and its left inverse, refunctionalization; a special case of fold–unfold fusion due to Ohori and Sasano, fixed-point promotion; and an implementation technique for reduction semantics due to Danvy and Nielsen, refocusing. This work is directly applicable to transforming programs into monadic normal form.


Theoretical Computer Science | 2012

On inter-deriving small-step and big-step semantics: A case study for storeless call-by-need evaluation

Olivier Danvy; Kevin Millikin; Johan Munk; Ian Zerny

Starting from the standard call-by-need reduction for the @l-calculus that is common to Ariola, Felleisen, Maraist, Odersky, and Wadler, we inter-derive a series of hygienic semantic artifacts: a reduction-free storeless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for call-by-need evaluation. Furthermore we observe that the evaluation function implementing this natural semantics is in defunctionalized form. The refunctionalized counterpart of this evaluation function implements an extended direct semantics in the sense of Cartwright and Felleisen. Overall, the semantic artifacts presented here are simpler than many other such artifacts that have been independently worked out, and which require ingenuity, skill, and independent soundness proofs on a case-by-case basis. They are also simpler to inter-derive because the inter-derivational tools (e.g., refocusing and defunctionalization) already exist.


ACM Queue | 2015

Spicing Up Dart with Side Effects

Erik Meijer; Kevin Millikin; Gilad Bracha

The Dart programming language has recently incorporated a set of extensions designed to support asynchrony and generator functions. Because Dart is a language for Web programming, latency is an important concern. To avoid blocking, developers must make methods asynchronous when computing their results requires nontrivial time. Generator functions ease the task of computing iterable sequences.


implementation and application of functional languages | 2005

A rational deconstruction of landin's j operator

Olivier Danvy; Kevin Millikin

Landins J operator was the first control operator for functional languages, and was specified with an extension of the SECD machine. Through a series of meaning-preserving transformations (transformation into continuation-passing style (CPS) and defunctionalization) and their left inverses (transformation into direct style and refunctionalization), we present a compositional evaluation function corresponding to this extension of the SECD machine. We then characterize the J operator in terms of CPS and in terms of delimited-control operators in the CPS hierarchy. Finally, we present a motivated wish to see Landins name added to the list of co-discoverers of continuations.


Information Processing Letters | 2008

On the equivalence between small-step and big-step abstract machines: a simple application of lightweight fusion

Olivier Danvy; Kevin Millikin


Science of Computer Programming | 2009

Refunctionalization at work

Olivier Danvy; Kevin Millikin


BRICS Report Series | 2007

On the Equivalence between Small-Step and Big-Step Abstract Machines: A Simple Application of Lightweight Fusion

Olivier Danvy; Kevin Millikin


BRICS Report Series | 2005

A Dynamic Continuation-Passing Style for Dynamic Delimited Continuations

Dariusz Biernacki; Olivier Danvy; Kevin Millikin

Collaboration


Dive into the Kevin Millikin's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge