MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Serial combinators: “optimal” grains of parallelism
Proc. of a conference on Functional programming languages and computer architecture
Computer
Denotational semantics of a para-functional programming language
International Journal of Parallel Programming
Arrays, non-determinism, side-effects, and parallelism: A functional perspective
Proc. of a workshop on Graph reduction
GRIP—A high-performance architecture for parallel graph reduction
Proc. of a conference on Functional programming languages and computer architecture
Nondeterminism with referential transparency in functional programming languages
The Computer Journal
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Crystal: theory and pragmatics of generating efficient parallel code
Parallel functional languages and compilers
A foundation for an efficient multi-threaded scheme system
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The design of an operating system for modern programming languages
The design of an operating system for modern programming languages
First-class schedules and virtual maps
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Algebraic approaches to nondeterminism—an overview
ACM Computing Surveys (CSUR)
Data-Driven and Demand-Driven Computer Architecture
ACM Computing Surveys (CSUR)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Para-functional programming: a paradigm for programming multiprocessor systems
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Functional Programming for Loosely-Coupled Multiprocessors
Functional Programming for Loosely-Coupled Multiprocessors
Functional Programming and Communicating Processes
Proceedings of the Parallel Architectures and Languages Europe, Volume I
Proceedings of the 1989 Glasgow Workshop on Functional Programming
Evaluation Annotations for Hope+
Proceedings of the 1989 Glasgow Workshop on Functional Programming
I-structures: Data structures for parallel computing
Proceedings of the Workshop on Graph Reduction
Nondeterministic call by need is neither lazy nor by name
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
ALICE a multi-processor reduction machine for the parallel evaluation CF applicative languages
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
High-level abstractions for parallel functional programming
High-level abstractions for parallel functional programming
Algorithm + strategy = parallelism
Journal of Functional Programming
Implicitly threaded parallelism in manticore
Journal of Functional Programming
Functional high performance financial IT: the hiperfit research center in copenhagen
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
Hi-index | 0.00 |
Parallel functional languages often use meta-linguistic annotations to provide control over parallel evaluation. In this paper we explore a flexible mechanism to control when an expression is evaluated: first-class monadic schedules. We discuss the advantages of using such first-class values over traditional annotation-based systems. In particular, it is often desirable to make decisions about the operational behavior of parallel programs depending on the dynamic state of the system. For example, we may want to measure the system load before deciding to evaluate expressions in parallel. For this purpose, we show how monads can be used to access dynamic system parameters in a referentially transparent manner (up to termination).As a mechanism to reason about schedules, we present a set of algebraic properties that any implementation of schedules must satisfy. We also describe an implementation that translates schedules into a dialect of Scheme extended with futures. We prove that this implementation satisfies the given set of algebraic properties, and give performance results for a parallel solution to the n-body problem using the Barnes--Hut method.Although our ideas were developed specifically for nonstrict functional languages such as Haskell, we briefly discuss how they can be used with strict functional languages and imperative languages as well.