Results 1  10
of
31
A FormulaeasTypes Notion of Control
 In Conference Record of the Seventeenth Annual ACM Symposium on Principles of Programming Languages
, 1990
"... The programming language Scheme contains the control construct call/cc that allows access to the current continuation (the current control context). This, in effect, provides Scheme with firstclass labels and jumps. We show that the wellknown formulaeastypes correspondence, which relates a constr ..."
Abstract

Cited by 237 (0 self)
 Add to MetaCart
The programming language Scheme contains the control construct call/cc that allows access to the current continuation (the current control context). This, in effect, provides Scheme with firstclass labels and jumps. We show that the wellknown formulaeastypes correspondence, which relates a constructive proof of a formula ff to a program of type ff, can be extended to a typed Idealized Scheme. What is surprising about this correspondence is that it relates classical proofs to typed programs. The existence of computationally interesting "classical programs"  programs of type ff, where ff holds classically, but not constructively  is illustrated by the definition of conjunctive, disjunctive, and existential types using standard classical definitions. We also prove that all evaluations of typed terms in Idealized Scheme are finite.
Control Categories and Duality: on the Categorical Semantics of the LambdaMu Calculus
, 1999
"... this paper, we study the relationship between the callbyname and callbyvalue paradigms for Parigot's calculus. The calculus is an extension of the simplytyped lambda calculus with certain sequential control operators. We show that, in the presence of product and disjunction types, the ca ..."
Abstract

Cited by 84 (3 self)
 Add to MetaCart
this paper, we study the relationship between the callbyname and callbyvalue paradigms for Parigot's calculus. The calculus is an extension of the simplytyped lambda calculus with certain sequential control operators. We show that, in the presence of product and disjunction types, the callbyname and callbyvalue calculi are isomorphic to each other, in the sense that there exist syntactic translations between them that preserve the operational semantics and that are mutually inverse up to isomorphism of types. These translations take the form of a
Semantic Lego
, 1995
"... Denotational semantics [Sch86] is a powerful framework for describing programming languages; however, its descriptions lack modularity: conceptually independent language features influence each others' semantics. We address this problem by presenting a theory of modular denotational semantics. ..."
Abstract

Cited by 37 (0 self)
 Add to MetaCart
Denotational semantics [Sch86] is a powerful framework for describing programming languages; however, its descriptions lack modularity: conceptually independent language features influence each others' semantics. We address this problem by presenting a theory of modular denotational semantics. Following Mosses [Mos92], we divide a semantics into two parts, a computation ADT and a language ADT (abstract data type). The computation ADT represents the basic semantic structure of the language. The language ADT represents the actual language constructs, as described by a grammar. We define the language ADT using the computation ADT; in fact, language constructs are polymorphic over many different computation ADTs. Following Moggi [Mog89a], we build the computation ADT from composable parts, using monads and monad transformers. These techniques allow us to build many different computation ADTs, and, since our language constructs are polymorphic, many different language semantics. We autom...
On the unity of duality
 Special issue on “Classical Logic and Computation
, 2008
"... Most type systems are agnostic regarding the evaluation strategy for the underlying languages, with the value restriction for ML which is absent in Haskell as a notable exception. As type systems become more precise, however, detailed properties of the operational semantics may become visible becaus ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
Most type systems are agnostic regarding the evaluation strategy for the underlying languages, with the value restriction for ML which is absent in Haskell as a notable exception. As type systems become more precise, however, detailed properties of the operational semantics may become visible because properties captured by the types may be sound under one strategy but not the other. For example, intersection types distinguish between callbyname and callbyvalue functions, because the subtyping law (A → B) ∩ (A → C) ≤ A → (B ∩ C) is unsound for the latter in the presence of effects. In this paper we develop a prooftheoretic framework for analyzing the interaction of types with evaluation order, based on the notion of polarity. Polarity was discovered through linear logic, but we propose a fresh origin in Dummett’s program of justifying the logical laws through alternative verificationist or pragmatist “meaningtheories”, which include a bias towards either introduction or elimination rules. We revisit Dummett’s analysis using the tools of MartinLöf’s judgmental method, and then show how to extend it to a unified polarized logic, with Girard’s “shift ” connectives acting as intermediaries. This logic safely combines intuitionistic and dual intuitionistic reasoning principles, while simultaneously admitting a focusing interpretation for the classical sequent calculus. Then, by applying the CurryHoward isomorphism to polarized logic, we obtain a single programming language in which evaluation order is reflected at the level of types. Different logical notions correspond directly to natural programming constructs, such as patternmatching, explicit substitutions, values and callbyvalue continuations. We give examples demonstrating the expressiveness of the language and type system, and prove a basic but modular type safety result. We conclude with a brief discussion of extensions to the language with additional effects and types, and sketch the sort of explanation this can provide for operationallysensitive typing phenomena. 1
Duality between CallbyName Recursion and CallbyValue Iteration
 IN PROC. COMPUTER SCIENCE LOGIC, SPRINGER LECTURE NOTES IN COMPUT. SCI
, 2001
"... We investigate the duality between callbyname recursion and callbyvalue iteration on the λµcalculi. The duality between callbyname and callbyvalue was first studied by Filinski, and Selinger has studied the categorytheoretic duality on the models of the callbyname λµcalculus and the cal ..."
Abstract

Cited by 9 (4 self)
 Add to MetaCart
We investigate the duality between callbyname recursion and callbyvalue iteration on the λµcalculi. The duality between callbyname and callbyvalue was first studied by Filinski, and Selinger has studied the categorytheoretic duality on the models of the callbyname λµcalculus and the callbyvalue one. We extend the callbyname λµcalculus and the callbyvalue one with a fixedpoint operator and an iteration operator, respectively. We show that the dual translations constructed by Selinger can be expanded into our extended λµcalculi, and we also discuss their implications to practical applications.
Dependently Typed Programming with DomainSpecific Logics
 SUBMITTED TO POPL ’09
, 2008
"... We define a dependent programming language in which programmers can define and compute with domainspecific logics, such as an accesscontrol logic that statically prevents unauthorized access to controlled resources. Our language permits programmers to define logics using the LF logical framework, ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
We define a dependent programming language in which programmers can define and compute with domainspecific logics, such as an accesscontrol logic that statically prevents unauthorized access to controlled resources. Our language permits programmers to define logics using the LF logical framework, whose notion of binding and scope facilitates the representation of the consequence relation of a logic, and to compute with logics by writing functional programs over LF terms. These functional programs can be used to compute values at runtime, and also to compute types at compiletime. In previous work, we studied a simplytyped framework for representing and computing with variable binding [LICS 2008]. In this paper, we generalize our previous type theory to account for dependently typed inference rules, which are necessary to adequately represent domainspecific logics, and we present examples of using our type theory for certified software and mechanized metatheory.
Implicit and Explicit Aspects of Scope and Block Structure
"... Block structure is a fundamental mechanism for expressing the scope of variables in a computation. Scope can be expressed either explicitly with formal parameters or implicitly with free variables. We discuss the transformations between explicit and implicit scope. Making scope explicit is current p ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
Block structure is a fundamental mechanism for expressing the scope of variables in a computation. Scope can be expressed either explicitly with formal parameters or implicitly with free variables. We discuss the transformations between explicit and implicit scope. Making scope explicit is current practice in functional programming: it is called "lambdalifting. " Our thesis addresses the transformations between explicit and implicit scope. We show lambdadropping to be a useful transformation that can be applied to clarify the structure of programs and to increase the efficiency of recursive functions. In addition, we demonstrate that lambdadropping is of practical use as a backend in a partial evaluator. 1 Preface This document describes most of the work that was done in conjunction with the author's "speciale" (master's thesis). One of the primary subjects of this work is a program transformation called "lambdadropping." It was first conceived by my thesis advisor, Olivier Dan...
Classical Callbyneed and duality
"... Abstract. We study callbyneed from the point of view of the duality between callbyname and callbyvalue. We develop sequentcalculus style versions of callbyneed both in the minimal and classical case. As a result, we obtain a natural extension of callbyneed with control operators. This lea ..."
Abstract

Cited by 4 (4 self)
 Add to MetaCart
Abstract. We study callbyneed from the point of view of the duality between callbyname and callbyvalue. We develop sequentcalculus style versions of callbyneed both in the minimal and classical case. As a result, we obtain a natural extension of callbyneed with control operators. This leads us to introduce a callbyneed λµcalculus. Finally, by using the dualities principles of λµ˜µcalculus, we show the existence of a new callbyneed calculus, which is distinct from callbyname, callbyvalue and usual callbyneed theories. 1
LANES: An InterDomain DataOriented Routing Architecture
"... Dataoriented networking has attracted research recently, but the efficiency of the stateoftheart solutions can still be improved. Our work towards this goal is set in a cleanslate architecture consisting of modular rendezvous, routing, and forwarding functions. In this paper we present the inter ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Dataoriented networking has attracted research recently, but the efficiency of the stateoftheart solutions can still be improved. Our work towards this goal is set in a cleanslate architecture consisting of modular rendezvous, routing, and forwarding functions. In this paper we present the interdomain routing layer and its interplay with the other components of the system. The proposed system is built around two types of nodes: forwarding nodes and branching nodes. The forwarding nodes are optimized for throughput with no persubscription state and no need to change passing packets, while branching nodes contain a large memory for caching and can make complex routing decisions. The amount of storage space and bandwidth can be independently scaled to suit the needs of each network. In the background, topology nodes perform loadbalancing and configure routes in each domain using a twodimensional addressing mechanism. The paths taken by packets adapt to the number of active subscribers to keep the amount of innetwork state and latency low. A new dataoriented congestion control scheme is introduced, which takes into account the use of storage resources onpath and is fair to multicast flows.