Eden — The paradise of functional concurrent programming (original) (raw)

Dataflow constructs for a language extension based on the algebra of communicating processes

Proceedings of the 4th Workshop on Scala - SCALA '13, 2013

The dataflow programming paradigm addresses how data flows inside programs. Program components, that are often concurrently active, send data to one another; this eases software composition. Mainstream programming languages do not support the paradigm well because of their deterministic and sequential nature. A language that focuses on concurrency is better suited to incorporate concepts from the dataflow paradigm. SubScript is an extension to the Scala programming language with constructs from the Algebra of Communicating Processes, targeted at event-driven and concurrent programming. Like ACP, SubScript focuses on program behavior; support for data was through local variables and parameters. However, the ACP background enabled SubScript to deal with the challenges of the dataflow paradigm. This is achieved through several new features. 1. A process may have a result value, like a method 2. A process result value may be passed on to another process that starts subsequently. This helps getting rid of variables, e.g., in GUI controller specifications. 3. Output actions from a process may be piped to a parallel process, yielding a similar expressiveness as pipes in Unix command shell language. 4. Actors written in Scala often need to keep track of a state, and their program text poorly expresses the conceptual control flow. When such actors are written in SubScript, incoming data may be treated as events that may appear anywhere in the specification, just like in SubScript GUI specifications.

A Taxonomy for Programming Languages wit h Multi-Sequential Processes

Daimi Report Series, 1984

The purpose of this article is to describe a high-level conceptual framework-a taxonomy-for programming languages with language constructs for specification of cosequential and concurrent processes. We identify the major differences and similarities between cosequential and concurrent processes, and we discuss the essential aspects of cosequential processes, concerning different patterns in which control can be transferred between the processes. Moreover, we discuss the important common properties of cosequential and concurrent processes: synchronization and communication. Figure 1. A taxonomy for cosequential processes.

Process annotations and process types

1993

Abstract In a concurrent functional language processes are functions that are executed concurrently. Using special annotations based on lazy copying arbitrary dependencies between these functions can be used to specify arbitrary networks of processes. The communication and synchronization between the processes is realized using the lazy evaluation principle without any additional communication primitves. Communication takes place when a process demands a value that is being calculated by another process.

Coordinating Functional Processes with Haskell#

This paper presents Haskell#, a parallel functional language based on coordination. Haskell# supports lazy stream communication and facilities, at coordination level, to the specification of data parallel programs. Haskell# supports a clean and complete, semantic and syntactic, separation between coordination and computation levels of programming, with several benefits to parallel program engineering. The implementation of some well-known applications in Haskell# is presented, demonstrating its expressiveness, allowing for elegant, simple, and concise specification of any static pattern of parallel, concurrent or distributed computation.

Concurrent Interactive Processes in a Pure Functional Language

In this paper we present an operational semantics for concurrent interactive process es in the purely functional programming language Clean. An interactive process is in essence a state transition system which apart from its logical state can also access the state of the file system, do highlevel Graphical User I/O, and do inter-process communication via synchronous and asynchronous message passing and data sharing. Inter-process communication is type-safe and polymorphic. The semantics of the system is based on earlier work on the Interleaved Event I/O system. In this paper we identify limitations of the interleaved model in the context of concurrent processes and propose a new process semantics that does allow a concurrent implementation. The method basically intro duces a Remote Procedure Call communication scheme and demonstrates how to apply this scheme to obtain a concurrent process semantics. The resulting system is the Concur rent Event I/O system . The operational semantics is given in Clean itself. As a result the concurrency system is completely func tional because the construction is done within the pure functional framework.

From data flow networks to process algebras

PARLE'93 Parallel …, 1993

Data flow networks are a paradigm for concurrent computations in which a collection of concurrently and asynchronously executing nodes communicate by sending data over FIFO communication channels. The need to deal with data and the asynchronous communication make reasoning about the semantics of nondeterministic networks very difficult .

Haskell_#: Coordinating Functional Processes

2012

This paper presents Haskell#, a coordination language targeted at the efficient implementation of parallel scientific applications on loosely coupled parallel architectures, using the functional language Haskell. Examples of applications, their implementation details and performance figures are presented.