23,299 research outputs found
Space-Efficient Gradual Typing in Coercion-Passing Style
Herman et al. pointed out that the insertion of run-time checks into a gradually typed program could hamper tail-call optimization and, as a result, worsen the space complexity of the program. To address the problem, they proposed a space-efficient coercion calculus, which was subsequently improved by Siek et al. The semantics of these calculi involves eager composition of run-time checks expressed by coercions to prevent the size of a term from growing. However, it relies also on a nonstandard reduction rule, which does not seem easy to implement. In fact, no compiler implementation of gradually typed languages fully supports the space-efficient semantics faithfully.
In this paper, we study coercion-passing style, which Herman et al. have already mentioned, as a technique for straightforward space-efficient implementation of gradually typed languages. A program in coercion-passing style passes "the rest of the run-time checks" around - just like continuation-passing style (CPS), in which "the rest of the computation" is passed around - and (unlike CPS) composes coercions eagerly. We give a formal coercion-passing translation from ?S by Siek et al. to ?S?, which is a new calculus of first-class coercions tailored for coercion-passing style, and prove correctness of the translation. We also implement our coercion-passing style transformation for the Grift compiler developed by Kuhlenschmidt et al. An experimental result shows stack overflow can be prevented properly at the cost of up to 3 times slower execution for most partially typed practical programs
Gradual Liquid Type Inference
Liquid typing provides a decidable refinement inference mechanism that is
convenient but subject to two major issues: (1) inference is global and
requires top-level annotations, making it unsuitable for inference of modular
code components and prohibiting its applicability to library code, and (2)
inference failure results in obscure error messages. These difficulties
seriously hamper the migration of existing code to use refinements. This paper
shows that gradual liquid type inference---a novel combination of liquid
inference and gradual refinement types---addresses both issues. Gradual
refinement types, which support imprecise predicates that are optimistically
interpreted, can be used in argument positions to constrain liquid inference so
that the global inference process e effectively infers modular specifications
usable for library components. Dually, when gradual refinements appear as the
result of inference, they signal an inconsistency in the use of static
refinements. Because liquid refinements are drawn from a nite set of
predicates, in gradual liquid type inference we can enumerate the safe
concretizations of each imprecise refinement, i.e. the static refinements that
justify why a program is gradually well-typed. This enumeration is useful for
static liquid type error explanation, since the safe concretizations exhibit
all the potential inconsistencies that lead to static type errors. We develop
the theory of gradual liquid type inference and explore its pragmatics in the
setting of Liquid Haskell.Comment: To appear at OOPSLA 201
Complementarity constraints and induced innovation: Some evidence from the first IT regime
Technological search is often depicted to be random. This paper takes a different view and analyses how innovative recombinant search is triggered, how it is done and what initial conditions influence the final design of technological artefacts. We argue that complementarities (non-separabilities) play an important role as focusing devices guiding the search for new combinations. Our analysis takes the perspective of technology adopters and not that of inventors or innovators of new products. We illustrate the process of decomposition and re-composition under the presence of binding complementarity constraints with a historical case study on the establishment of the First IT Regime at the turn of the 19th century.Technological regimes, systemic innovation, adoption of technologies, complexity,information technology 1870-1930
Complementarity constraints and induced innovation: some evidence from the First IT Regime
Technological search is often depicted to be random. This paper takes a different view and analyses how innovative recombinant search is triggered, how it is done and what initial conditions influence the final design of technological artefacts. We argue that complementarities (non-separabilities) play an important role as focusing devices guiding the search for new combinations. Our analysis takes the perspective of technology adopters and not that of inventors or innovators of new products. We illustrate the process of decomposition and re-composition under the presence of binding complementarity constraints with a historical case study on the establishment of the First IT Regime at the turn of the 19th century.research and development ;
- …