We introduce a functional reactive programming language that extends WORMHOLES, an enhancement of YAMPA with support for effects. Our proposal relaxes the constraint in WORMHOLES that restricts all resources to single...
详细信息
functional array programming is a style of programming that enables massive parallelism through use of combinators (such as map and reduce) that apply functions to whole arrays. These can be readily parallelised when ...
详细信息
ISBN:
(纸本)9783030798369;9783030798376
functional array programming is a style of programming that enables massive parallelism through use of combinators (such as map and reduce) that apply functions to whole arrays. These can be readily parallelised when the functions these combinators are applied to are pure and, in some cases, also associative. We introduce reversible variants of well-known array combinators and show how these can be implemented in parallel using only reversible operations and without accumulating garbage. We introduce a simple reversible functional array programming language, Agni, and show some examples of use.
We present an architectural design of a library for Bayesian modelling and inference in modern functional programming languages. The novel aspect of our approach are modular implementations of existing state-of-the-ar...
详细信息
We present an architectural design of a library for Bayesian modelling and inference in modern functional programming languages. The novel aspect of our approach are modular implementations of existing state-of-the-art inference algorithms. Our design relies on three inherently functional features: higher-order functions, inductive data-types, and support for either type-classes or an expressive module system. We provide a performant Haskell implementation of this architecture, demonstrating that high-level and modular probabilistic programming can be added as a library in sufficiently expressive languages. We review the core abstractions in this architecture: inference representations, inference transformations, and inference representation transformers. We then implement concrete instances of these abstractions, counterparts to particle filters and Metropolis-Hastings samplers, which form the basic building blocks of our library. By composing these building blocks we obtain state-of-the-art inference algorithms: Resample-Move Sequential Monte Carlo, Particle Marginal Metropolis-Hastings, and Sequential Monte Carlo Squared. We evaluate our implementation against existing probabilistic programming systems and find it is already competitively performant, although we conjecture that existing functional programming optimisation techniques could reduce the overhead associated with the abstractions we use. We show that our modular design enables deterministic testing of inherently stochastic Monte Carlo algorithms. Finally, we demonstrate using OCand that an expressive module system can also implement our design.
In this paper, we present a functional programming model and a dataflow execution model similar to distributed computing frameworks, like Apache Spark and Flink. Our programming and execution model is suitable for any...
详细信息
ISBN:
(纸本)9781728126074
In this paper, we present a functional programming model and a dataflow execution model similar to distributed computing frameworks, like Apache Spark and Flink. Our programming and execution model is suitable for any platform, although its main target are safety-critical embedded systems. Therefore, we emphasize on low overhead, timing analyzability, and potential support for fault tolerance. We implemented our design for the x86 shared memory platform and showed that the performance is comparable to the performance of OpenMP.
This paper describes the visual design of blocks for editing code in the functional language Haskell. The aim of the proposed blocks-based environment is to support students' initial steps in learning functional p...
详细信息
ISBN:
(纸本)9781728148496
This paper describes the visual design of blocks for editing code in the functional language Haskell. The aim of the proposed blocks-based environment is to support students' initial steps in learning functional programming. Expression blocks and slots are shaped to ensure constructed code is both syntactically correct and preserves conventional use of whitespace. The design aims to help students learn Haskell's sophisticated type system which is often regarded as challenging for novice functional programmers. Types are represented using text, color and shape, and empty slots indicate valid argument types in order to ensure that constructed code is well-typed.
Choreographic programming is an emerging paradigm for programming distributed systems. In choreographic programming, the programmer describes the behavior of the entire system as a single, unified program — a choreog...
详细信息
作者:
Porkoláb, ZoltánFaculty of Informatics
Department of Programming Languages and Compilers Eötvös Loránd University Pázmány Péter sétány 1/C Budapest1117 Hungary
The C++ programming language is a multiparadigm language, with a rich set of procedural, object-oriented, generative and, since C++11, functional language elements. The language is also well-known for its capability t...
详细信息
The age of writing single-threaded applications is over. To develop scalable applications, developers must make use of concurrency and parallelism. Nonetheless, introducing concurrency and parallelism is difficult: na...
详细信息
The age of writing single-threaded applications is over. To develop scalable applications, developers must make use of concurrency and parallelism. Nonetheless, introducing concurrency and parallelism is difficult: naiÌvely implemented, concurrent code is prone to issues such as race conditions and deadlocks. Moving to the distributed setting introduces yet more issues, in particular the possibility of failure. To cope with many of the problems of concurrent programming, language designers have proposed a class of programming languages known as communication-centric programming languages, which provide lightweight processes which do not share memory, but instead communicate using explicit message passing. The focus of this thesis is on typed communication-centric functional programming languages, using type systems to provide static guarantees about the runtime behaviour of concurrent programs. We investigate two strands of work: the relationship between typed channel- and actor-based languages, and the integration of asynchrony, exception handling, and session types in a functional programming language. In the first strand, we investigate two particular subclasses of communication-centric languages: channel-based languages such as Go, and languages based on the actor model, such as Erlang. We distil the essence of the languages into two concurrent λ-calculi: λch for simply-typed channels, and lact for simply-typed actors, and provide type- and semantics-preserving translations between them. In doing so, we clear up confusion between the two models, give theoretical foundations for recent implementations of type-parameterised actors, and also provide a theoretical grounding for frameworks which emulate actors in channel-based languages. Furthermore, by extending the core calculi, we note that actor synchronisation drastically simplifies the translation from channels into actors, and show that Erlang's selective receive mechanism can be implemented without special
It is currently impossible to model functional programs in the same way that UML is used to model object-oriented programs: no analogous graphical notation exists. Unlike object-oriented programs, however, functional ...
详细信息
ISBN:
(数字)9781728195209
ISBN:
(纸本)9781728195216
It is currently impossible to model functional programs in the same way that UML is used to model object-oriented programs: no analogous graphical notation exists. Unlike object-oriented programs, however, functional programming is built on a solid mathematical basis and it may be possible to adapt graphical notation from the mathematical domain for such modelling. This work examines string diagrams as a way to model certain functional abstractions. A proposed notation is demonstrated in the contexts of equational reasoning and descriptive modelling, and is found to be suitable for both.
Traditional CPU design shows signs of fatigue, expressed as overwhelming security vulnerabilities. As we investigate functional programming as an alternative to the insecure, traditional imperative programming model, ...
详细信息
ISBN:
(数字)9781728133201
ISBN:
(纸本)9781728133218
Traditional CPU design shows signs of fatigue, expressed as overwhelming security vulnerabilities. As we investigate functional programming as an alternative to the insecure, traditional imperative programming model, the inexistence of a stable functional programming system infrastructure and code base acts as the classic chicken-and-egg problem. There is no functional programming basic software because there are no functional programming machines, and vice-versa. In this paper we attempt to break this cycle by designing a baseline platform that enables the research on the practical security properties of architectures under a discipline of full-stack functional programming.
暂无评论