English
Related papers

Related papers: Compiling Purely Functional Structured Programs

200 papers

Domain-specific languages are becoming increasingly important. Almost every application touches multiple domains. But how to define, use, and combine multiple DSLs within the same application? The most common approach is to split the…

Programming Languages · Computer Science 2016-12-13 Piotr Danilewski , Philipp Slusallek

Choreographic programming is an emerging programming paradigm for concurrent and distributed systems, whereby developers write the communications that should be enacted and then a distributed implementation is automatically obtained by…

Programming Languages · Computer Science 2022-08-18 Luís Cruz-Filipe , Eva Graversen , Lovro Lugović , Fabrizio Montesi , Marco Peressotti

Monads are a popular tool for the working functional programmer to structure effectful computations. This paper presents polymonads, a generalization of monads. Polymonads give the familiar monadic bind the more general type forall a,b. L a…

Programming Languages · Computer Science 2014-06-10 Michael Hicks , Gavin Bierman , Nataliya Guts , Daan Leijen , Nikhil Swamy

Passive documents and active programs now widely comingle. Document languages include Turing-complete programming elements, and programming languages include sophisticated document notations. However, there are no formal foundations that…

Programming Languages · Computer Science 2023-11-15 Will Crichton , Shriram Krishnamurthi

A domain specific language (DSL) abstracts from implementation details and is aligned with the way domain experts reason about a software component. The development of DSLs is usually centered around a grammar and transformations that…

Software Engineering · Computer Science 2016-03-30 Sarmen Keshishzadeh , Arjan J. Mooij , Jozef Hooman

Context-Oriented programming languages provide us with primitive constructs to adapt program behaviour depending on the evolution of their operational environment, namely the context. In previous work we proposed ML_CoDa, a context-oriented…

Programming Languages · Computer Science 2015-12-25 Andrea Canciani , Pierpaolo Degano , Gian-Luigi Ferrari , Letterio Galletta

Natural language processing for programming aims to use NLP techniques to assist programming. It is increasingly prevalent for its effectiveness in improving productivity. Distinct from natural language, a programming language is highly…

Computation and Language · Computer Science 2023-08-08 Qingfu Zhu , Xianzhen Luo , Fang Liu , Cuiyun Gao , Wanxiang Che

Coinductive definitions, such as that of an infinite stream, may often be described by elegant logic programs, but ones for which SLD-refutation is of no value as SLD-derivations fall into infinite loops. Such definitions give rise to…

Programming Languages · Computer Science 2013-12-24 Ekaterina Komendantskaya , John Power , Martin Schmidt

A number of domain specific languages, such as circuits or data-science workflows, are best expressed as diagrams of boxes connected by wires. Unfortunately, functional languages have traditionally been ill-equipped to embed this sort of…

Programming Languages · Computer Science 2021-07-23 Jean-Philippe Bernardy , Arnaud Spiwack

Generation of software from modeling languages such as UML and domain specific languages (DSLs) has become an important paradigm in software engineering. In this contribution, we present some positions on software development in a model…

Software Engineering · Computer Science 2014-09-09 Bernhard Rumpe , Martin Schindler , Steven Völkel , Ingo Weisemöller

Formal, mathematically rigorous programming language semantics are the essential prerequisite for the design of logics and calculi that permit automated reasoning about concurrent programs. We propose a novel modular semantics designed to…

Programming Languages · Computer Science 2022-02-25 Crystal Chang Din , Reiner Hähnle , Ludovic Henrio , Einar Broch Johnsen , Violet Ka I Pun , Silvia Lizeth Tapia Tarifa

Based on our previous work on algebraic laws for true concurrency, we design a structured parallel programming language for true concurrency called PPL. Different to most programming languages, PPL has an explicit parallel operator as an…

Logic in Computer Science · Computer Science 2021-11-10 Yong Wang

Dynamic logic is a powerful framework for reasoning about imperative programs. An extension with a concurrent operator [18] was introduced to formalise programs running in parallel. In other direction, other authors proposed a systematic…

Logic in Computer Science · Computer Science 2019-11-04 Leandro Gomes

We unify functional and logic programming by treating predicatesas functions equipped with their support: the set of inputs whose output is nonzero. Datalog, for instance, is a language of finitely supported boolean functions. Finite…

Programming Languages · Computer Science 2026-04-30 Michael Arntzenius , Max Willsey

Program slicing provides explanations that illustrate how program outputs were produced from inputs. We build on an approach introduced in prior work by Perera et al., where dynamic slicing was defined for pure higher-order functional…

Programming Languages · Computer Science 2017-09-12 Wilmer Ricciotti , Jan Stolarek , Roly Perera , James Cheney

This paper describes a categorical interpretation of the Wolfram Language and introduces a simple implementation of monadic types and the "do" notation. The monadic style of programming combined with the many built in functions of the…

Programming Languages · Computer Science 2020-05-20 Kacper Topolnicki

In recent years, there has been extensive research on how to extend general-purpose programming language semantics with domain-specific modeling constructs. Two areas of particular interest are (i) universal probabilistic programming where…

Programming Languages · Computer Science 2025-03-19 Oscar Eriksson , Anders Ågren Thuné , Johannes Borgström , David Broman

Reuse is a key technique for a more efficient development and ensures the quality of the results. In object technology explicit encapsulation, interfaces, and inheritance are well known principles for independent development that enable…

Software Engineering · Computer Science 2014-09-24 Holger Krahn , Bernhard Rumpe , Stefan Völkel

User defined recursive types are a fundamental feature of modern functional programming languages like Haskell, Clean, and the ML family of languages. Properties of programs defined by recursion on the structure of recursive types are…

Programming Languages · Computer Science 2013-12-11 James Caldwell

Software frequently converts data from one representation to another and vice versa. Naively specifying both conversion directions separately is error prone and introduces conceptual duplication. Instead, bidirectional programming…

Programming Languages · Computer Science 2019-02-20 Li-yao Xia , Dominic Orchard , Meng Wang