26,098 papers · page 147 of 1,305
Nate F. F. Bragg, Jeffrey S. Foster, Philip Zucker
Mixed integer linear programming is a powerful and widely used approach to solving optimization problems, but its expressiveness is limited. In this paper we introduce the optimization-aided language Scimitar, which encodes optimization problems using an expressive functional lan…
Marcel Weiher, Marcel Taeumel, Robert Hirschfeld
We present the architecture-oriented programming language Objective-S, which goes beyond procedure calls for expressing inter-component connectors (so-called glue code) in order to directly express a wide range of architectural patterns directly in the implementation. Previous ap…
Karoliine Holter, Juhan Oskar Hennoste, Patrick Lam, Simmo Saan, Vesal Vojdani
Traditional, or concrete, debuggers allow developers to step through programs and explore the corresponding concrete program states—developers can query current values of program variables. This exploration enables developers to formulate and refine hypotheses about program behav…
Mark Marron
A day in the life of a developer often involves more time working with schemas, configurations, and data description systems than writing code and logic in a classical programming language. As more systems move into distributed worlds, e.g. cloud and microservices, and developers…
Roland Carl Backhouse, Walter Guttmann, Michael Winter
Abstract An equivalence relation can be constructed from a given (homogeneous, binary) relation in two steps: first, construct the smallest reflexive and transitive relation containing the given relation (the “star” of the relation) and, second, construct the largest symmetric re…
Samuel Caldwell, Tony Garnock-Jones, Matthias Felleisen
Abstract Actor languages realize concurrency via message passing, which most of the time is easy to use. Empirical code inspection provides evidence, however, that on occasion, programmers wish to have an actor share some of its state with others. The dataspace model adds a tight…
Eva Graversen, Andrew K. Hirsch, Fabrizio Montesi
Abstract We present PolyChor $\lambda$ , a language for higher-order functional choreographic programming —an emerging paradigm for concurrent programming. In choreographic programming, programmers write the desired cooperative behaviour of a system of processes and then compile …
Daniel Hillerström, Sam Lindley, John Longley
Abstract We study a fundamental efficiency benefit afforded by delimited control, showing that for certain higher-order functions, a language with advanced control features offers an asymptotic improvement in runtime over a language without them. Specifically, we consider the gen…
Graham Hutton
Although Abstracting Gradual Typing provides a systematic approach to design gradual languages, the original framework has limitations: first, it accepts design choices that lead to type inconsistencies sneaking through evaluation.Second, when a type inconsistency is identified a…
Ondrej Lhoták, Philip Wadler
Abstract Gradual typing provides a model for when a legacy language with less precise types interacts with a newer language with more precise types. Casts mediate between types of different precision, allocating blame when a value fails to conform to a type. The blame theorem ass…
Kazutaka Matsuda, Meng Wang
Abstract Invertibility is a fundamental concept in computer science, with various manifestations in software development (serializer/deserializer, parser/printer, redo/undo, compressor/decompressor, and so on). Full invertibility necessarily requires bijectivity, but the direct a…
Cameron Moy
Abstract The Knuth–Morris–Pratt (KMP) algorithm for string search is notoriously difficult to understand. Lost in a sea of index arithmetic, most explanations of KMP obscure its essence. This paper constructs KMP incrementally, using pictures to illustrate each step. The end resu…
Shin-Cheng Mu
Abstract Some top-down problem specifications, if executed, may compute sub-problems repeatedly. Instead, we may want a bottom-up algorithm that stores solutions of sub-problems in a table to be reused. How the table can be represented and efficiently maintained, however, can be …
François Pottier
Functional Programming for the Masses" Second Edition, by
Takahiro Sanada
Abstract We present an arrow calculus with operations and handlers and its operational and denotational semantics. The calculus is an extension of Lindley, Wadler and Yallop’s arrow calculus. The denotational semantics is given using a strong (pro)monad $\mathcal{A}$ in the bicat…
Taro Sekiyama, Takeshi Tsukada, Atsushi Igarashi
Abstract The naive combination of polymorphic effects and polymorphic type assignment has been well known to break type safety. In the literature, there are two kinds of approaches to this problem: one is to restrict how effects are triggered and the other is to restrict how they…
Michael Sperber
ContextCombinator libraries have been well studied in countless papers.Indeed, as Peyton Jones, Eber, and Seward wrote in 2000, At this point, any red-blooded functional programmer should start to foam at the mouth, yelling "build a combinator library."(Peyton Jones et al., 2000)
Chenghao Su, Lin Chen, Yanhui Li, Yuming Zhou
Abstract Gradual typing integrates static and dynamic typing by introducing a dynamic type and a consistency relation. A problem of gradual type systems is that dynamic types can easily hide erroneous data flows since consistency relations are not transitive. Therefore, a more ri…
Wenhao Tang, Tom Schrijvers
Abstract Some effects are considered to be higher level than others. High-level effects provide expressive and succinct abstraction of programming concepts, while low-level effects allow more fine-grained control over program execution and resources. Yet, often it is desirable to…
Wenjia Ye, Bruno C. d. S. Oliveira
Abstract The semantics of gradually typed languages is typically given indirectly via an elaboration into a cast calculus. This contrasts with more conventional formulations of programming language semantics, where the semantics of a language is given directly using, for instance…