Hostname: page-component-6766d58669-tq7bh Total loading time: 0 Render date: 2026-05-21T19:22:04.174Z Has data issue: false hasContentIssue false

Causal commutative arrows

Published online by Cambridge University Press:  29 June 2011

HAI LIU
Affiliation:
Department of Computer Science, Yale University, New Haven, CT 06520, USA (e-mail: hai.liu@aya.yale.edu, eric.cheng@aya.yale.edu, paul.hudak@yale.edu)
ERIC CHENG
Affiliation:
Department of Computer Science, Yale University, New Haven, CT 06520, USA (e-mail: hai.liu@aya.yale.edu, eric.cheng@aya.yale.edu, paul.hudak@yale.edu)
PAUL HUDAK
Affiliation:
Department of Computer Science, Yale University, New Haven, CT 06520, USA (e-mail: hai.liu@aya.yale.edu, eric.cheng@aya.yale.edu, paul.hudak@yale.edu)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

Arrows are a popular form of abstract computation. Being more general than monads, they are more broadly applicable, and, in particular, are a good abstraction for signal processing and dataflow computations. Most notably, arrows form the basis for a domain-specific language called Yampa, which has been used in a variety of concrete applications, including animation, robotics, sound synthesis, control systems, and graphical user interfaces. Our primary interest is in better understanding the class of abstract computations captured by Yampa. Unfortunately, arrows are not concrete enough to do this with precision. To remedy this situation, we introduce the concept of commutative arrows that capture a noninterference property of concurrent computations. We also add an init operator that captures the causal nature of arrow effects, and identify its associated law. To study this class of computations in more detail, we define an extension to arrows called causal commutative arrows (CCA), and study its properties. Our key contribution is the identification of a normal form for CCA called causal commutative normal form (CCNF). By defining a normalization procedure, we have developed an optimization strategy that yields dramatic improvements in performance over conventional implementations of arrows. We have implemented this technique in Haskell, and conducted benchmarks that validate the effectiveness of our approach. When compiled with the Glasgow Haskell Compiler (GHC), the overall methodology can result in significant speedups.

Information

Type
Articles
Copyright
Copyright © Cambridge University Press 2011
Submit a response

Discussions

No Discussions have been published for this article.