Our aim is to define the kernel of a simple and uniform programming model-the reactor model-which can serve as a foundation for building and evolving internet-scale programs. Such programs are characterized by collect...
详细信息
Our aim is to define the kernel of a simple and uniform programming model-the reactor model-which can serve as a foundation for building and evolving internet-scale programs. Such programs are characterized by collections of loosely-coupled distributed components that are assembled on the fly to produce a composite application. A reactor consists of two principal components: mutable state, in the form of a fixed collection of relations, and code, in the form of a fixed collection of rules in the style of Datalog. A reactor's code is executed in response to an external stimulus, which takes the form of an attempted update to the reactor's state. As in classical process calculi, the reactor model accommodates collections of distributed, concurrently executing processes. However, unlike classical process calculi, our observable behaviors are sequences of states, rather than sequences of messages. Similarly, the interface to a reactor is simply its state, rather than a collection of message channels, ports, or methods. One novel feature of our model is the ability to compose behaviors both synchronously and asynchronously. Also, our use of Datalog-style rules allows aspect-like composition of separately-specified functional concerns in a natural way. (C) 2008 Elsevier B.V. All rights reserved.
there is an impedance mismatch between message-passing concurrency and virtual machines, such as the JVM. VMs usually map their threads to heavyweight OS processes. Without a lightweight process abstraction, users are...
详细信息
there is an impedance mismatch between message-passing concurrency and virtual machines, such as the JVM. VMs usually map their threads to heavyweight OS processes. Without a lightweight process abstraction, users are often forced to write parts of concurrent applications in an event-driven style which obscures control flow,and increases the burden on the programmer. In this paper we show how thread-based and event-based programming can be unified under a single actor abstraction. Using advanced abstraction mechanisms of the Scala programming language, we implement our approach on unmodified JVMs. Our programming model integrates well withthe threading model of the underlying VM. (C) 2008 Elsevier B.V. All rights reserved.
Among systems for creating slide presentations, the dominant ones offer essentially no abstraction capability. Slideshow represents our effort over the last several years to build an abstraction-friendly slide system ...
详细信息
Among systems for creating slide presentations, the dominant ones offer essentially no abstraction capability. Slideshow represents our effort over the last several years to build an abstraction-friendly slide system with PLT Scheme. We show how functionalprogramming is well suited to the task of slide creation, we report on the programming contructs that we have developed for slides, and we describe our solutions to practical problems in rendering slides. We also describe experimental extensions to DrScheme that support a mixture of programmatic and WYSIWYG slide creation.
the advent of multi-core processors, particularly with projections that numbers of cores will continue to increase, has focused attention on parallel programming. It is widely recognized that current programming techn...
详细信息
ISBN:
(纸本)9780769547497
the advent of multi-core processors, particularly with projections that numbers of cores will continue to increase, has focused attention on parallel programming. It is widely recognized that current programming techniques, including those that are used for scientific parallel programming, will not allow the easy formulation of general purpose applications. An area which is receiving interest is the use of programming styles which are side-effect free. Previous work on parallel functionalprogramming demonstrated the potential of this to permit the easy exploitation of parallelism. Recent systems like Cilk use conventional languages such as C but encourage the use of a largely functional style (side-effect free) when writing programs. An important part of the Cilk runtime is a system to balance the usage of cores. In this paper we present SLAM (Spreading Load with Active Messages), a dynamic load balancing system based on functional language evaluation techniques. We show that SLAM, provided with appropriate hardware support, significantly outperforms the Cilk system. We evaluated our system using tiled CMPs with private and shared L2 caches separately. Our results show that, for the benchmarks evaluated, SLAM outperforms Cilk by 28% on average when using 32-core CMPs with private L2 caches. For the case of the CMPs with shared L2 caches, SLAM was on average 21% faster than Cilk when using 32 cores and 62% faster when using 64 cores.
We present a new way of embedding functional languages into the Coq proof assistant by using meta-programming. this allows us to develop the meta-theory of the language using the deep embedding and provides a convenie...
详细信息
ISBN:
(纸本)9781450370974
We present a new way of embedding functional languages into the Coq proof assistant by using meta-programming. this allows us to develop the meta-theory of the language using the deep embedding and provides a convenient way for reasoning about concrete programs using the shallow embedding. We connect the deep and the shallow embeddings by a soundness theorem. As an instance of our approach, we develop an embedding of a core smart contract language into Coq and verify several important properties of a crowd-funding contract based on a previous formalisation of smart contract execution in blockchains.
this book constitutes the refereed proceedings of the 8thinternationalconference on Agile Processes in Software Engineering and eXtreme programming, XP 2008, held in Limerick, Ireland, in June 2008. Out of 54 submit...
ISBN:
(数字)9783540682554
ISBN:
(纸本)9783540682547
this book constitutes the refereed proceedings of the 8thinternationalconference on Agile Processes in Software Engineering and eXtreme programming, XP 2008, held in Limerick, Ireland, in June 2008. Out of 54 submitted papers, 16 were accepted as full papers, 4 experience reports, 14 poster papers, 9 workshop papers, and 3 contributions on panel discussions. the papers are organized in topical sections on agile innovations, adaptation of agile, agile testing and assessment, history and evolution of agile, people factors in agile environments, conceptual models of agility, and experience reports.
the highlights of the first Annual ACM SIGPLAN Workshop for Commercial Users of functionalprogramming (CUFP) which was held on September 18th, 2004, in Snowbird, Utah, are discussed. It was co-located withthe 2004 A...
详细信息
the highlights of the first Annual ACM SIGPLAN Workshop for Commercial Users of functionalprogramming (CUFP) which was held on September 18th, 2004, in Snowbird, Utah, are discussed. It was co-located withthe 2004 ACM SIGPLAN internationalconference on functionalprogramming (ICFP). the goals of the workshop were to act as a voice for commercial users of functionalprogramming languages and technology. there was 25 attendees and the workshop was based around 9 short presentations from a diverse cross-section of commercial users.
We employ the narrowing-based execution mechanism of the functional logic programming language Curry in order to automatically generate a system of test cases for glass-box testing of Curry programs. the test cases fo...
详细信息
Finite maps or finite relations between infinite sets do not even form a category, since the necessary identities are not finite. We show relation-algebraic extensions of semigroupoids where the operations that would ...
详细信息
Finite maps or finite relations between infinite sets do not even form a category, since the necessary identities are not finite. We show relation-algebraic extensions of semigroupoids where the operations that would produce infinite results have been replaced with variants that preserve finiteness, but still satisfy useful algebraic laws. the resulting theories allow calculational reasoning in the relation-algebraic style with only minor sacrifices;our emphasis on generality even provides some concepts in theories where they had not been available before. the semigroupoid theories presented in this paper also can directly guide library interface design and thus be used for principled relation-algebraic programming;an example implementation in Haskell allows manipulating finite binary relations as data in a point-free relation-algebraic programming style that integrates naturally withthe current Haskell collection types. this approach enables seamless integration of relation-algebraic formulations to provide elegant solutions of problems that, with different data organisation, are awkward to tackle. (C) 2007 Elsevier Inc. All rights reserved.
暂无评论